如何在 Kotlin 和 Spring 中使用 setter 注入?
How to use setter injection with Kotlin and Spring?
我目前正在尝试弄清楚如何在 Kotlin 中使用 setter 注入 Spring。我不能为此使用构造函数注入,因为 Bean 可能为 null 并且我不想使用字段注入,因为它是最糟糕的。显而易见的写法
var x : Any? = null
@Autowired
set(value) {
x = value
}
无法工作,因为这会导致循环调用。那么如何使用 setter 注入自动装配成员?
这个问题的解决方案有点难找,因为到目前为止我从未为 Kotlin 写过 setter。问题是人们很容易将 属性 与同样由编译器生成的 backing field 混淆。
因此正确的代码是
var x : Any? = null
@Autowired(required = false)
set(value) {
field = value
}
顺便说一下,required = false
是使注入可选的必要条件。
我目前正在尝试弄清楚如何在 Kotlin 中使用 setter 注入 Spring。我不能为此使用构造函数注入,因为 Bean 可能为 null 并且我不想使用字段注入,因为它是最糟糕的。显而易见的写法
var x : Any? = null
@Autowired
set(value) {
x = value
}
无法工作,因为这会导致循环调用。那么如何使用 setter 注入自动装配成员?
这个问题的解决方案有点难找,因为到目前为止我从未为 Kotlin 写过 setter。问题是人们很容易将 属性 与同样由编译器生成的 backing field 混淆。
因此正确的代码是
var x : Any? = null
@Autowired(required = false)
set(value) {
field = value
}
顺便说一下,required = false
是使注入可选的必要条件。