2
- @EnableTransactionManagement上MyBootApplication
@Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); }
其打印事務管理器添加的是org.springframework.orm.jpa.JpaTransactionManager@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之後,此類(服務)不能Autowired bean(存儲庫)?
當我刪除@Transactional,一切都很好。
但是當我添加它。該存儲庫爲空,它不能被注入。
我讀過這個問題Using @Transaction annotation with @Autowired - Spring,我在我的application.properties中添加了spring.aop.proxy-target-class=true
,仍然是同樣的錯誤。
我用kotlin來寫它,但我想這不是原因。
即使如此,我會在稍後嘗試使用java。
我的錯誤,我在BaseService中有一些屬性,也應該添加它。
我有同樣的問題,因爲我使用了javax.transaction包中的@Transactional。更改爲org.springframework.transaction.annotation後,它可以工作。 – Danix
也許複製到https://stackoverflow.com/questions/41298289/spring-boot-autowired-with-kotlin-in-service-is-always-null – miran