Kotlin spring-boot @ConfigurationProperties
我正在尝试创建以下bean AmazonDynamoDBAsyncClientProvider
。 我有application.properties定义endpoint
和tablePrefix
,我试图注入使用@ConfigurationProperties
以下是相同的代码片段。 当我运行我的春季启动应用程序不起作用。
我已经尝试使用一个普通的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="")
最后继承了常规的java bean,它使用ConfigurationProperties
填充,但是当它获得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; } }
你有没有尝试摆脱你的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春季发展更容易。
@ConfigurationProperties("dynamo") @NoArg data class DynamoDBConfiguration(var endpoint: String, var prefix: String)