Spring @Autowire不在Kotlin工作

对于我的大学任务,我需要使用注入依赖关系的各种方法,我坚持使用注释autowire,因为它说依赖关系尚未初始化。 我的代码:

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(...)是一个方法teleport(...)的接口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声明中丢失