如何在Kotlin和Spring中使用二传手注入?

时间:2018-12-03 13:31:27

标签: spring dependency-injection kotlin setter-injection

我目前正在尝试弄清楚如何在Kotlin中使用Spring的二传手。我不能为此使用构造函数注入,因为Bean可能为空,并且我不想使用字段注入,因为这是最糟糕的。明显的写法

var x : Any? = null
    @Autowired
    set(value) {
        x = value
    }

无法工作,因为这将导致循环调用。那么,如何使用setter注入为成员自动接线?

1 个答案:

答案 0 :(得分:0)

仅由于我到目前为止从未为Kotlin编写过二传手,所以很难找到解决方案。问题在于,很容易将属性与编译器生成的backing field混淆。

因此正确的代码是

var x : Any? = null
    @Autowired(required = false)
    set(value) {
        field = value
    }

顺便说一下,required = false是使注入可选的必要条件。