Kotlin Spring类的方面初始化
我正试图在Java8Spring项目中使用kotlin。 我通过逐个替换类(java->kotlin)来实现这一点 我在Finder的一个班级: Finder.java具有以下结构:Kotlin Spring类的方面初始化,spring,dependency-injection,kotlin,aspect,Spring,Dependency Injection,Kotlin,Aspect,我正试图在Java8Spring项目中使用kotlin。 我通过逐个替换类(java->kotlin)来实现这一点 我在Finder的一个班级: Finder.java具有以下结构: @Compoment class Finder { private SomeObject someObject; Finder() { someObject = new SomeObject(); } public void doSomething() { //a
@Compoment
class Finder {
private SomeObject someObject;
Finder() {
someObject = new SomeObject();
}
public void doSomething() { //aspect looks here
someObject.do();
}
}
我已将其替换为Finder.kt
@Compoment
open public class Finder {
private val someObject : SomeObject
constructor() {
someObject = SomeObject()
}
public fun doSomething() { //aspect looks here
someObject.do() //NPE here
}
}
我发现,在debuggind过程中,调用了constructor,在Finder实例创建时创建了someObject。但FinderEnhanceBySpring生成的类实例自动连接到检测器实例。它没有初始化,所以当我尝试访问某个对象时,我得到了NPE
此外,Finder类还有其他自动连接字段(为了简化代码,我没有在这里编写),它们也没有初始化
UPD:我在Finder的方法中发现了这个方面。当我删除它时,键入autowired实例成为Finder(而不是FinderEnhancerBySpring)并完全初始化
这里有什么问题?
(0.13.1514-kotlin版本)默认情况下,所有kotlin方法都是final(说java),因此我必须允许使用open关键字覆盖它:
public open fun doSomething() { //aspect looks here
someObject.do()
}
这是问题的解决办法吗?如果是这样,你可以接受自己的答案,让这个问题看起来更“完成”