在基于Kotlin的Spring Boot应用程序中,我想使用@ConfigurationProperties
从我的application.yml
文件访问某些配置。但是,到目前为止,该实例似乎尚未使用配置中的值进行初始化。这是我所拥有的:
@Profile("create-accounts")
@Component
class InitialAccountsCreator {
@Autowired
lateinit var accountConfig: AccountsConfiguration
val logger = loggerFor<InitialAccountsCreator>()
@PostConstruct
fun createAccounts() {
// This will print 0
logger.warn("CONFIGURED ACCOUNTS: ${accountConfig.keys.size}");
}
}
@ConfigurationProperties("accounts")
class AccountsConfiguration {
lateinit var keys: MutableList<Account>
class Account {
lateinit var id: String,
lateinit var name: String
}
}
我已在我的Application
中添加了注释:
@EnableConfigurationProperties(AccountsConfiguration::class)
配置如下:
accounts:
keys:
- id: foo
name: Bar
到目前为止,从调试开始,似乎Spring甚至没有尝试将值插入实例中。
我也已经尝试添加Kotlin with Spring Boot 2.0 @ConfigurationProperties not working中引用的kapt插件:
diff --git a/webapp/build.gradle b/webapp/build.gradle
index faef149..6400bed 100644
--- a/webapp/build.gradle
+++ b/webapp/build.gradle
@@ -25,6 +25,7 @@ apply plugin: 'kotlin-spring'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'idea'
+apply plugin: 'kotlin-kapt'
sourceSets {
main {
@@ -105,6 +106,9 @@ dependencies {
exclude module: 'spring-boot-starter-logging'
}
+
+ kapt "org.springframework.boot:spring-boot-configuration-processor"
+ optional "org.springframework.boot:spring-boot-configuration-processor"
}
task integrationTest(type: Test) {
答案 0 :(得分:0)
lateinit var keys: MutableList<Account>
不起作用。代替使用
var keys = mutableListOf<Account>()