Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Spring类的方面初始化_Spring_Dependency Injection_Kotlin_Aspect - Fatal编程技术网

Kotlin Spring类的方面初始化

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

我正试图在Java8Spring项目中使用kotlin。 我通过逐个替换类(java->kotlin)来实现这一点

我在Finder的一个班级:

Finder.java具有以下结构:

@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()
} 

这是问题的解决办法吗?如果是这样,你可以接受自己的答案,让这个问题看起来更“完成”