如何在yml中获取我的配置值 - 使用dropwizard guice D.I?

时间:2017-03-21 16:00:31

标签: java guice dropwizard

我在config.yml

下方使用
# 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 

在课堂下面阅读我的DynamoDBConfig课程中的上述配置值。

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类包含DynamoDB config。

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;
    }
}

现在,我想在aws_access_key课程中阅读aws_secret_keyAWSclient.java个值,以创建awsclient

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

我的问题是,我在AWSClient课程中如何阅读/注入配置值。我正在使用dropwizard-guice模块进行DI。并且无法弄清楚,如何将在DW启动时创建的configuration对象绑定到其类。

P.S。 : - >我已经完成了这个SO post,但它并没有解决我的问题,因为它没有使用guice作为DI模块。

1 个答案:

答案 0 :(得分:0)

通常,您可以将配置对象注入类字段或构造函数,例如:

public class AWSclient {

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

}

此外,使用@Singleton注释注释您的ReadApiConfiguration类。