2016-07-30 22 views
2
  1. @EnableTransactionManagement上MyBootApplication
  2. @Bean public Object testBean(PlatformTransactionManager platformTransactionManager){ System.out.println(">>>>>>>>>>TransactionManager is " + platformTransactionManager.getClass().getName()); return new Object(); } 其打印事務管理器添加的是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之後,此類(服務)不能Autowired bean(存儲庫)?

當我刪除@Transactional,一切都很好。

但是當我添加它。該存儲庫爲空,它不能被注入。

我讀過這個問題Using @Transaction annotation with @Autowired - Spring,我在我的application.properties中添加了spring.aop.proxy-target-class=true,仍然是同樣的錯誤。

我用kotlin來寫它,但我想這不是原因。

即使如此,我會在稍後嘗試使用java。

我的錯誤,我在BaseService中有一些屬性,也應該添加它。

+0

我有同樣的問題,因爲我使用了javax.transaction包中的@Transactional。更改爲org.springframework.transaction.annotation後,它可以工作。 – Danix

+0

也許複製到https://stackoverflow.com/questions/41298289/spring-boot-autowired-with-kotlin-in-service-is-always-null – miran

回答

1

我已經在func上添加了'open',但是省略了propeties。

@PersistenceContext 
protected open lateinit var em: EntityManager 

@Autowired 
protected open lateinit var env: Environment 
相關問題