Java 如何使用dropwizard guice D.I在yml中获取配置值?
我正在使用下面的Java 如何使用dropwizard guice D.I在yml中获取配置值?,java,guice,dropwizard,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 {
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;
}
}
现在我想在我的AWSclient.java
类中读取aws\u access\u key
和aws\u secret\u key
值来创建AWSclient
BasicAWSCredentials awsCreds = new BasicAWSCredentials("access_key_id", "secret_key_id");
我的问题是,如何在AWSClient
类中读取/注入配置值。我正在为DI使用dropwizard guice
模块。无法理解如何将在DW启动时创建的配置对象绑定到其类
注意:->我已经讨论过这个问题,但它并没有解决我的问题,因为它没有将guice用作DI模块。通常,您可以将配置对象注入类字段或构造函数,如:
public class AWSclient {
@Inject
public AWSclient(ReadApiConfiguration conf) {
initConnection(conf.getDynamoDBConfig().getSecretKey(), ...)
}
}
另外,使用@Singleton注释注释ReadApiConfiguration类。但是我仍然需要从我的应用程序类创建AWSClient,仅在运行(最终ReadApiConfiguration配置,最终环境)
方法具有config参数的地方。如何从应用程序的其他部分创建?您不必在那里创建它。将您的AWSClient注射到您需要的任何地方。Guice应该注意创建它的实例并向构造函数提供一个配置对象。我需要在Guice包中的某个地方绑定AWSClient,对吗?我仍然不明白guice将如何创建它的实例。你们能分享一段和guice相关的代码吗?或者它是由TB完成的吗?