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声明中丢失