2017-08-30 115 views
3

如何正确初始化ConfigurationProperties Spring Boot with KotlinKotlin&Spring Boot @ConfigurationProperties

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

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

但它看起来很丑,实际上foo不是var iable,富时不断val UE和应该启动时被初始化并且将来不会改变

+1

这是好的事情是这样的。 Spring使用JavaBean绑定,所以你需要getters/setters。 'ConfigurationProperties'用于类型安全配置,它不是'data'类。 –

+1

请参阅https://github.com/spring-projects/spring-boot/issues/8762,它讨论了如何为'@ ConfigurationProperties'支持正确的不可变数据类。 –

回答

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

可以用这种方式

+0

谢谢,为你评论。我知道'@ Value'注释,但我不这么认为,因为它产生了很多样板代码,'@ ConfigurationProperties'肯定更好。 – Sonique

6

正如docs表示:A“的Java Bean“是为了使用ConfigurationProperties要提供这意味着你的属性需要有getter和setter,因此val是不可能的时刻。

getter和setter方法通常是强制性的,因为绑定是通过标准的Java组件属性的描述,就像在Spring MVC中,有这样的情况:二传手可以省略[...]

有一个悬而未决的问题相关科特林为你的使用情况,但:https://github.com/spring-projects/spring-boot/issues/8762