Kotlin&Spring Boot @ConfigurationProperties

如何使用Kotlin正确初始化Spring Boot中的 ConfigurationProperties?

目前我喜欢在下面的例子中:

@ConfigurationProperties("app") class Config { var foo: String? = null } 

但它看起来相当丑陋,实际上foo是不可变的,foo是不变的应该在启动过程中初始化,将来不会改变

如果你看看Docs ,那么你需要提供一个“Java Bean”,如果你想使用ConfigurationProperties 。 这意味着你的属性需要有getter和setter,所以val是不可能的。

getters和setter通常是强制的,因为绑定是通过标准的Java Beans属性描述符来完成的,就像在Spring MVC中一样。 有些情况下,

有一个开放的问题与Kotlin有关: https : //github.com/spring-projects/spring-boot/issues/8762

 @Value("\${some.property.key:}") lateinit var foo:String 

可以这样使用