Spring宣告式事務注意點,以及不生效情況
情況1:
class XxxService{
public void methodA(){
methodB()
}
@Transactional
public void methodB(){
saveXX1();
saveXX2();
}
}
- 入口,呼叫XxxService的methodA方法。methodA內部呼叫methodB方法。
- 情況1【事務不生效】-此事methodA上沒有事務註解
- 可以給methodA也增加@Transactional
情況2:
class XxxService{
@Transactional
public void methodA(){
methodB()
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB(){
saveXX1();
saveXX2();
}
}
- 入口,呼叫XxxService的methodA方法。methodA內部呼叫methodB方法。methodB意圖開啟新事務
- 情況2【事務不新建立,傳播沿用methodA的事務】
- 可以將methodB方法放到其他類中,解決問題。(即:通過YyyService.methodB()方式掉用)
注意點:
- 異常問題,spring預設異常是RuntimeException通過下面方法修改,@Transactional(rollbackFor = Exception.class)
- 回滾問題,可以通過throw new RuntimeTimeException()回滾,或者try..catch..異常後,顯示回滾。
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- 如果try… catch..異常後,不再次丟擲或者不顯示回滾,事務不生效
- 資料庫引擎要支援事務,如果是mysql,注意表要使用支援事務的引擎,比如innodb,如果是myisam,事務是不起作用的。
- 開啟註解事務的支援:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
相關文章
- Spring-宣告式事務Spring
- 三 Spring 宣告式事務Spring
- Spring宣告式事務控制Spring
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- Spring事務回滾情況Spring
- Spring事務的介紹,以及基於註解@Transactional的宣告式事務Spring
- Spring宣告式事務@Transactional使用Spring
- spring宣告式事務管理配置Spring
- Spring的事務管理(二)宣告式事務管理Spring
- Spring @Transactional 宣告式事務揭祕Spring
- 深刻理解Spring宣告式事務Spring
- 五(二)、spring 宣告式事務xml配置SpringXML
- spring多資料來源下 事務不生效Spring
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- BASH_SUBSHELL 變數不生效的情況變數
- Spring的四種宣告式事務的配置-Hibernate事務Spring
- Spring宣告式事務純xml模式回顧SpringXML模式
- JavaEE(12)Spring整合Mybaits、宣告式事務JavaSpringAI
- Spring boot +mybatis 實現宣告式事務管理Spring BootMyBatis
- spring宣告式事務無法關閉sessionSpringSession
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- 全面分析 Spring 的程式設計式事務管理及宣告式事務管理Spring程式設計
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- Spring宣告式事務的兩種實現方式Spring
- 筆記53-Spring jdbcTemplate&宣告式事務筆記SpringJDBC
- 美團二面:spring事務不生效的15種場景Spring
- Spring MVC + Mybatis + Spring Aop宣告式事務管理沒有作用SpringMVCMyBatis
- Spring事務需要注意的幾個點Spring
- spring事務管理的一些注意點Spring
- 注意Spring事務這一點,避免出現大事務Spring
- Spring程式設計式和宣告式事務例項講解Spring程式設計
- @Transactional spring 配置事務 注意事項Spring
- 棧空間受限情況下C/C++函式呼叫注意事項C++函式
- Spring宣告式事務管理出錯示例與解決之道Spring
- SpringMVC、MyBatis 宣告式事務管理SpringMVCMyBatis
- 宣告式事務能否和程式設計式事務巢狀使用?程式設計巢狀
- 定時任務裡面事務不生效問題
- 保護億萬資料安全,Spring有“宣告式事務”絕招Spring