Kotlin + SpringBoot 2.2.2 @Transactional注解导致 Service 类无法注入属性 时间: 2019-12-31 18:15 分类: Kotlin,Spring 小记一下,不知道是不是 BUG,反正现在都没找到解决办法。 有如下类: ```kotlin @Service open class MovieService { @Autowired lateinit var movieDao: MovieDao } ``` 当`MovieService`不管是类还是它的方法加上`@Transactional`后,里面的`dao`就无法注入了(注意,这里不是网上说的那些`MovieService`无法注入到其他地方了,而是它里面的属性无法注入),这肯定是代理出了问题,`SpringBoot 2.x`默认使用`CGLIB`代理,暂时没去加个接口改用`JDK`自带的动态代理测试行不行。 最终暂时用手动的方式添加事务吧: ```kotlin @Configuration open class DataSourceConfigure { @Bean open fun dataSourceTransactionManager(datasource: DruidDataSource): DataSourceTransactionManager { return DataSourceTransactionManager(datasource) } } ``` 手动开启事务并提交事务: ```kotlin val transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition) dataSourceTransactionManager.commit(transactionStatus) ``` 标签: 无