Spring @Autowire не работает в Котлине

Для моей университетской задачи мне нужно использовать различные методы инъекции зависимостей, я застрял в autwire, используя аннотацию, потому что он говорит, что зависимость не была инициализирована. Мой код:

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"/> 

Teleporter – это интерфейс с одним методом 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