如何在ConfigurationProperties Spring Boot中正确初始化Kotlin
目前,我确实喜欢下面的例子:
@ConfigurationProperties("app")
class Config {
var foo: String? = null
}但是它看起来很难看,而且实际上foo不是一个variable,foo是常量 value,应该在启动时初始化,以后不会改变。
发布于 2019-10-28 18:03:49
使用新的SpringBoot2.2,您可以这样做:
@ConstructorBinding
@ConfigurationProperties(prefix = "swagger")
data class SwaggerProp(
val title: String, val description: String, val version: String
)不要忘了在build.gradle.kts中的依赖项中包含这一点
dependencies {
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
}发布于 2018-06-13 02:55:19
下面是我如何让它处理我的application.yml文件。
myconfig:
my-host: ssl://example.com
my-port: 23894
my-user: user
my-pass: pass这是kotlin文件:
@Configuration
@ConfigurationProperties(prefix = "myconfig")
class MqttProperties {
lateinit var myHost: String
lateinit var myPort: String
lateinit var myUser: String
lateinit var myPass: String
}这对我很有用。
发布于 2017-08-30 07:29:10
更新:从SpringBoot2.2.0开始,您可以使用数据类如下所示:
@ConstructorBinding
@ConfigurationProperties("example.kotlin")
data class KotlinExampleProperties(
val name: String,
val description: String,
val myService: MyService) {
data class MyService(
val apiToken: String,
val uri: URI
)
}有关进一步的参考,请参见正式文件。
过时到SpringBoot2.2.0,发布关闭的
正如文档中所述:为了使用ConfigurationProperties,必须提供"Java “,这意味着您的属性需要有getter和setter,因此val目前是不可能的。
Getter和setter通常是强制性的,因为绑定是通过标准的Java属性描述符进行的,就像Spring中的那样。在某些情况下,策划人可能会被省略.
这个问题已经在SpringBoot2.2.0中解决了,它应该很快发布:https://github.com/spring-projects/spring-boot/issues/8762
https://stackoverflow.com/questions/45953118
复制相似问题