4

我目前正在尝试弄清楚如何将 Spring 的 setter 注入与 Kotlin 一起使用。我不能为此使用构造函数注入,因为 Bean 可能为空,并且我不想使用字段注入,因为它是最糟糕的。显而易见的写作方式

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

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

4

1 回答 1

4

这个问题的解决方案有点难找,因为到目前为止我还没有为 Kotlin 写过 setter。问题是人们很容易将属性与编译器生成的支持字段混淆。

因此正确的代码是

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

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

于 2018-12-03T13:31:26.960 回答