在方法上添加@Transactional后,这个类(服务)不能Autowired bean(仓库)?

  1. 在MyBootApplication上添加@EnableTransactionManagement
  2. @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); } @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); }它打印的TransactionManager是org.springframework.orm.jpa.JpaTransactionManager
  3. @Service open class UserService : BaseService() { @Autowired lateinit var repository: UserRepository @Transactional fun updateValid(id: Long, valid: Boolean) { ErrorConstant.ParamErrorCode.IdIsNull.caseThrow { id == 0.toLong() } repository.updateValid(id,valid) } }

我使用spring.boot来构建我的项目。

当我删除@ Transactional,一切都很好。

但是当我添加它。 存储库是空的,它不能被注入。

我读了这个问题@Transaction注释与@Autowired – 春天 ,我添加spring.aop.proxy-target-class=true在我的application.properties,仍然是相同的错误。

我用kotlin写它,但我想这不是原因。

即使如此,我会尽量与以后的Java。

我已经在功能上添加了“打开”功能,但是省略了这些功能。

 @PersistenceContext protected open lateinit var em: EntityManager @Autowired protected open lateinit var env: Environment