我正在尝试创建以下bean AmazonDynamoDBAsyncClientProvider。我有定义endpoint和tablePrefix的application.properties,我正尝试使用@ConfigurationProperties注入它们
下面是相同的代码片段。当我运行我的spring-boot应用程序时,它不工作。
我也尝试过使用常规的java类来做同样的ConfigurationProperties类,它设置了这些属性,但是当涉及到AmazonDynamoDBAsyncClientProvider时,这些属性是空的。这里我漏掉了什么?
@Component
open class AmazonDynamoDBAsyncClientProvider @Autowired constructor(val dynamoDBConfiguration: DynamoDBConfig){
@Bean open fun getAmazonDBAsync() = AmazonDynamoDBAsyncClientBuilder.standard()
.withEndpointConfiguration(
AwsClientBuilder.EndpointConfiguration(dynamoDBConfiguration.endpoint, dynamoDBConfiguration.prefix))
.build()
}下面是我尝试使用配置自动绑定的kotlin bean
@Component
@ConfigurationProperties(value = "dynamo")
open class DynamoDBConfig(var endpoint: String="", var prefix: String="")最后是用ConfigurationProperties填充的常规java bean,但当它获得Autowired时,我看到这些属性为空/null
@Component
@ConfigurationProperties("dynamo")
public class DynamoDBConfiguration {
private String endpoint;
private String tablePrefix;
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public String getTablePrefix() {
return tablePrefix;
}
public void setTablePrefix(String tablePrefix) {
this.tablePrefix = tablePrefix;
}
}发布于 2017-07-25 17:51:03
你有没有试过在ConfigurationProperties类中去掉@Component注解?
以下是我对Kotlin和Spring所做的工作,希望对您有所帮助。
我正在尝试利用kotlin-spring和kotlin-allopen gradle插件
dependencies {
classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlinVersion"
classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion"
}
apply plugin: 'kotlin-spring'
apply plugin: 'kotlin-noarg'
noArg {
annotation("your.noarg.annotation.package.NoArg")
}它们确实使使用kotlin进行spring开发变得容易得多。
@ConfigurationProperties("dynamo")
@NoArg
data class DynamoDBConfiguration(var endpoint: String, var prefix: String)发布于 2018-12-19 14:29:20
我试过你的configuration类,它被填充了。我认为你的错误在于你试图创建bean的方式,函数需要在一个用@Configuration注释的类中,这应该是可行的:
@Configuration
class Beans {
@Bean
fun getAmazonDBAsync(config: DynamoDBConfiguration) =
AmazonDynamoDBAsyncClientBuilder.standard()
.withEndpointConfiguration(
AwsClientBuilder.EndpointConfiguration(config.endpoint, config.prefix)
)
.build()
}Spring将为您注入配置,只要您像上面那样用@Component注释配置即可。
发布于 2020-01-15 22:05:03
我遇到了类似的问题,并这样解决了它:
我用lateinit变量定义了配置属性class:
@ConfigurationProperties(prefix = "app")
open class ApplicationConfigProperties {
lateinit var publicUrl: String
}然后在我的spring boot应用程序中配置一个bean:
@SpringBootApplication
open class Application {
@Bean open fun appConfigProperties() = ApplicationConfigProperties()
}https://stackoverflow.com/questions/44171766
复制相似问题