2017-03-21 7 views
1

私は私のDynamoDBConfigクラスで上記設定値を読み取るためにconfig.ymlymlの設定値を取得する方法 - dropwizard guice D.Iを使用していますか?

# AWS DynamoDB settings 
dynamoDB: 
    # Access key 
    aws_access_key_id: "access-key" 
    #Secret Key 
    aws_secret_access_key: "secret-key" 
    aws_dynamodb_region: EU_WEST_1 

とクラス以下の下に使用しています。 DynamoDB設定が含ま

public class DynamoDBConfig { 
    public DynamoDBConfig() { 
    } 

    @JsonProperty("aws_access_key_id") 
    public String accessKey; 

    @JsonProperty("aws_secret_access_key") 
    public String secretKey; 

    @JsonProperty("aws_dynamodb_region") 
    public String region; 

    // getters and setters 
} 

最後にApplicationConfigクラス。

public class ReadApiConfiguration extends Configuration { 
    @NotNull 
    private DynamoDBConfig dynamoDBConfig = new DynamoDBConfig(); 

    @JsonProperty("dynamoDB") 
    public DynamoDBConfig getDynamoDBConfig() { 
     return dynamoDBConfig; 
    } 

    @JsonProperty("dynamoDB") 
    public void setDynamoDBConfig(DynamoDBConfig dynamoDBConfig) { 
     this.dynamoDBConfig = dynamoDBConfig; 
    } 
} 

今私はawsclient

BasicAWSCredentials awsCreds = new BasicAWSCredentials("access_key_id", "secret_key_id"); 

を作成するために、私のAWSclient.javaクラスでaws_access_keyaws_secret_key値を読みたいと思う私の問題は、私は/私のAWSClientクラスで設定値を、注入読んでどのように、あります。 DI用にdropwizard-guiceモジュールを使用しています。 DW起動時に作成されたconfigurationオブジェクトをそのクラスにバインドするにはどうしたらいいですか?

P.S. : - >私はこのSO postを通過しましたが、DIモジュールとしてguiceを使用しないので、私の問題は解決しません。 @Singletonアノテーションで、あなたのReadApiConfigurationクラスに注釈を付け、さらに

public class AWSclient { 

    @Inject 
    public AWSclient(ReadApiConfiguration conf) { 
    initConnection(conf.getDynamoDBConfig().getSecretKey(), ...) 
    } 

} 

答えて

0

通常、あなたは次のように、クラスフィールドに、またはコンストラクタにいずれかのコンフィギュレーション・オブジェクトを注入することができます。

+0

しかし、私のアプリケーションクラスからAWSClientを作成する必要があります。実行(最終的なReadApiConfiguration設定、 最終環境環境)メソッドにはconfigパラメータがあります。アプリケーションの他の部分からどのように作成できますか? – AKJ

+0

そこに作成する必要はありません。必要な場所にAWSClientを注入します。 Guiceはインスタンスを作成し、コンストラクタに設定オブジェクトを提供することに注意しなければなりません。 – Vyacheslav

+0

私はguice-bundleのどこかにAWSClientをバインドする必要がありますか?私はまだguiceがインスタンスを作成する方法を理解していません。あなたがguiceに関連していたり​​、それが完了していれば、コードの一部を共有できますか? – AKJ

関連する問題