Spring @Autowire不在Kotlin工作



对于我的大学任务,我需要使用各种注射依赖项的方法,我使用注释就卡住了自动,因为它说依赖关系尚未初始化。我的代码:

class TeleporterDeliveryMethod: DeliveryMethod {
    @Autowired
    lateinit var teleporter: Teleporter
    override fun deliver(pkg: Package): Int {
        teleporter.teleport(pkg)
        return 0
    }
}

传送器类:

class Teleporter3000 : Teleporter {
    override fun teleport(pkg: Package) {
        println("Teleporting package ${pkg.id}...")
    }
}

我也在xml中定义了此内容:

<bean id="teleporterDeliveryMethod" class="app.delivery.TeleporterDeliveryMethod"/>
<bean id="teleporter" class="app.delivery.Teleporter3000" scope="prototype"/>

传送器是一种与一种方法teleport(...)

的接口

运行此代码时,编译说:Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property teleporter has not been initialized

如果我手动注入XML中的依赖项,则可以按预期进行工作:

class="app.delivery.TeleporterDeliveryMethod">
    <property name="teleporter" ref="teleporter"/>
</bean>

即使在XML中自动起作用:

<bean id="teleporterDeliveryMethod" class="app.delivery.TeleporterDeliveryMethod" autowire="byType"/>

<context:component-scan base-package="app"/>

bean声明中缺少

最新更新