无法使“ ConfigurationProperties”正常工作

时间:2019-03-07 16:06:42

标签: spring-boot configuration

在基于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) {

1 个答案:

答案 0 :(得分:0)

lateinit var keys: MutableList<Account>

不起作用。代替使用

var keys = mutableListOf<Account>()