Spring boot +mybatis 實現宣告式事務管理

fusugongzi發表於2017-08-17

在專案中,一個函式需要進行兩條sql操作,兩條sql操作為一個整體,期望是要不一起執行,要不都不執行,所以引入了事務管理。


遇到的問題&未解決的坑:


在一個@service實現了一個事務管理的函式,發現在另一個service裡面新增此方法的@Autowired註解,事務管理失效


解決辦法:

在@controller層呼叫此方法時新增   @Transactional註解


方法以及呼叫新增的註解:


@Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED,readOnly = false,rollbackFor = {Exception.class})


只要是函式內部發生exception及實現回滾

方法級別:





controller層級別:





新發現 :



如果實現事務管理的service不被別的service呼叫,則不需要在controller層新增事務註解,如果被別的service呼叫,則事務管理失效,此時可以在controller層加上事務管理的注


解,service層加不加事務管理註解不起作用




相關文章