【发布时间】:2018-02-07 17:41:50
【问题描述】:
如何使用 Kotlin 在 Spring Boot 中正确初始化 ConfigurationProperties?
目前我喜欢下面的例子:
@ConfigurationProperties("app")
class Config {
var foo: String? = null
}
但它看起来很丑,实际上foo 不是variable,foo 是常量 value 并且应该在启动期间初始化并且不会在未来。
【问题讨论】:
-
这很好。 Spring 使用 JavaBean 绑定,因此您需要 getter/setter。
ConfigurationProperties用于类型安全配置,它不是data类。 -
参见github.com/spring-projects/spring-boot/issues/8762,它正在讨论为
@ConfigurationProperties支持正确的不可变数据类。 -
(2021) 这篇博文提供了在 Kotlin 中使用 ConfigurationProperties 的完整指南:towardsdatascience.com/… 我已经在最新的 Spring Boot (2.4.1) 中对其进行了测试。基本上,您需要在数据类中添加 ConstructorBinding 注解。并在Application类中添加ConfigurationPropertiesScan注解
标签: spring spring-boot kotlin