Rob*_*sch 5 singleton kotlin spring-boot
我有一个 Spring Boot 2 项目,并且正在使用 Kotlin。我想要实现的是拥有一个 Kotlin 单例(即一个对象)并注入 Spring 属性。
通常,我会使用构造函数注入来执行此操作,这是首选方式。但是,对于对象,不允许使用构造函数。lateinit var
另一种选择是与 结合使用@Value("\${my.property.name}")
,尽管那样我必须初始化字段或显式设置类型。
我找不到这方面的示例或类似情况,所以我很好奇这个用例所需的方法是什么。
从技术上讲,你可以这样做:
object MyObject {
lateinit var foo: String
}
@Configuration
class BeanConfiguration {
@Bean
fun myObject(): MyObject {
return MyObject.also {
it.foo = "foo"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不推荐这种方法,因为它看起来像代码味道。最好使用简单的class
es,因为 Spring 保证用 注释的方法@Bean
只会被调用一次(如果它们没有原型范围)。
由于object
不需要创建 s ,因此您可以根据需要管理其自己的生命周期,因此无需将所有内容都放在 Spring 中。
归档时间: |
|
查看次数: |
3309 次 |
最近记录: |