Kotlin пружинный ноль вводится вместо зависимости для транзакционных классов - PullRequest
0 голосов
/ 20 января 2020

Я читаю ответы из Kotlin переменная экземпляра имеет значение NULL при доступе из прокси-класса Spring , et c., Но я все еще не могу понять, что не так с моим кодом.

У меня действительно простой пример. Я удалил весь код, чтобы избежать некоторых приватных полей или методов, и явно указал все как открытые.

@Transactional
open class QuartzServiceStarter(open val factory: SchedulerFactoryBean) { }

Мой контекст конфигурации Spring:

@SpringBootApplication
@EnableTransactionManagement
class SampleApp {

...
    @Bean
    fun quartzServiceStarter(factory: SchedulerFactoryBean) = QuartzServiceStarter(factory)
...

}

Я также использую оба kotlin - полностью открытый плагин с пружинной поддержкой. Если я удаляю Транзакционную аннотацию, заводская зависимость корректно вводится, но если я ее добавляю, то создается прокси-сервер CGLIB с null зависимой инъекцией. Вопрос: я что-то упускаю, чтобы разрешить Spring CGLIB-прокси работать с kotlin?

spring.version 5.2.2.RELEASE

spring-boot.version 2.2.2.RELEASE

UPD. Скомпилированный класс

@org.springframework.transaction.annotation.Transactional public open class QuartzServiceStarter public constructor(factory: org.springframework.scheduling.quartz.SchedulerFactoryBean) {
    public open var factory: org.springframework.scheduling.quartz.SchedulerFactoryBean /* compiled code */

    @org.springframework.transaction.annotation.Transactional public open fun startJob(): kotlin.Unit { /* compiled code */ }
...