SpringMVC、MyBatis 宣告式事務管理
Spring事務管理分為傳統的全域性事務管理和本地事務管理,使得在任何環境中都可以使用統一的事務管理模型,你可以寫一次程式碼,然後在不同的環境從你的程式碼裡面配置不同的事務管理策略,Spring提供兩種事務管理策略:一種是宣告式事務管理策略,另一種是程式設計式事務管理策略,這裡主要介紹宣告式事務管理策略。
由於採用的是SpringMVC、 MyBatis,故統一採用了標註來宣告Service、Controller 。
由於伺服器啟動時載入配置檔案的順序為web.xml---applicationContext-*.xml(Spring的配置檔案)---springMVC-servlet.xml(SpringMVC的配置檔案),由於applicationContext-*.xmll配置檔案中Controller會先進行掃描裝配,但是此時service還沒有進行事務增強處理,得到的將是原樣的Service(沒有經過事務加強處理,故而沒有事務處理能力),所以我們必須在applicationContext-*.xml中不掃描Controller,此時applicationContext-*.xml中的配置如下:
<!-- applicationContext.xml中,去掉對controller的掃描 -->
expression="org.springframework.stereotype.Controller" />
最後,配置宣告式事務管理,事務的配置只有在 applicationContext.xml 中才會起作用
txManager "
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- spring declarative transaction management -->
expression="execution(* com.mpto.*.biz.impl.*.*(..))" />
注意:事務作用在service 上,不能在service裡面加try catch去捕獲異常,否則不能被spring攔截到,事務將失效。
到此SpringMVC宣告式事務管理配置完成。
由於採用的是SpringMVC、 MyBatis,故統一採用了標註來宣告Service、Controller 。
由於伺服器啟動時載入配置檔案的順序為web.xml---applicationContext-*.xml(Spring的配置檔案)---springMVC-servlet.xml(SpringMVC的配置檔案),由於applicationContext-*.xmll配置檔案中Controller會先進行掃描裝配,但是此時service還沒有進行事務增強處理,得到的將是原樣的Service(沒有經過事務加強處理,故而沒有事務處理能力),所以我們必須在applicationContext-*.xml中不掃描Controller,此時applicationContext-*.xml中的配置如下:
<!-- applicationContext.xml中,去掉對controller的掃描 -->
同理,在springMVC-servlet.xml 中去掉對 service的掃描,加入對controller的掃描
最後,配置宣告式事務管理,事務的配置只有在 applicationContext.xml 中才會起作用
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- spring declarative transaction management -->
expression="execution(* com.mpto.*.biz.impl.*.*(..))" />
注意:事務作用在service 上,不能在service裡面加try catch去捕獲異常,否則不能被spring攔截到,事務將失效。
到此SpringMVC宣告式事務管理配置完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-1656378/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring boot +mybatis 實現宣告式事務管理Spring BootMyBatis
- Spring的事務管理(二)宣告式事務管理Spring
- spring宣告式事務管理配置Spring
- Spring MVC + Mybatis + Spring Aop宣告式事務管理沒有作用SpringMVCMyBatis
- 全面分析 Spring 的程式設計式事務管理及宣告式事務管理Spring程式設計
- Spring-宣告式事務Spring
- 三 Spring 宣告式事務Spring
- Spring宣告式事務控制Spring
- Spring宣告式事務@Transactional使用Spring
- 宣告式事務能否和程式設計式事務巢狀使用?程式設計巢狀
- Spring宣告式事務管理出錯示例與解決之道Spring
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Spring @Transactional 宣告式事務揭祕Spring
- 深刻理解Spring宣告式事務Spring
- MyBatis5:MyBatis整合Spring事務管理(上篇)MyBatisSpring
- Spring的四種宣告式事務的配置-Hibernate事務Spring
- springboot專案-宣告式事務失效Spring Boot
- 五(二)、spring 宣告式事務xml配置SpringXML
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- Spring宣告式事務純xml模式回顧SpringXML模式
- JavaEE(12)Spring整合Mybaits、宣告式事務JavaSpringAI
- spring宣告式事務無法關閉sessionSpringSession
- spring事物配置,宣告式事務管理和基於@Transactional註解的使用Spring
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- MyBatis 事務管理解析:顛覆你心中對事務的理解!MyBatis
- 初學事務管理:SpringBoot+MybatisSpring BootMyBatis
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- Spring宣告式事務的兩種實現方式Spring
- 筆記53-Spring jdbcTemplate&宣告式事務筆記SpringJDBC
- Spring事務的介紹,以及基於註解@Transactional的宣告式事務Spring
- Spring程式設計式和宣告式事務例項講解Spring程式設計
- Spring Boot 揭祕與實戰(二) 資料儲存篇 - 宣告式事務管理Spring Boot
- Spring宣告式事務注意點,以及不生效情況Spring
- Mybatis--事務控制MyBatis
- MyBatis中的事務MyBatis
- Spring的事務管理入門:程式設計式事務管理(TransactionTemplate)Spring程式設計
- Spring+SpringMvc+Mybatis整合注意事項SpringMVCMyBatis
- 微服務分散式企業框架 Springmvc+mybatis+shiro+Dubbo+ZooKeeper微服務分散式框架SpringMVCMyBatis