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的事務管理(二)宣告式事務管理Spring
- spring宣告式事務管理配置Spring
- 三 Spring 宣告式事務Spring
- Spring宣告式事務控制Spring
- Spring-宣告式事務Spring
- Spring宣告式事務@Transactional使用Spring
- day15-宣告式事務
- Spring @Transactional 宣告式事務揭祕Spring
- 深刻理解Spring宣告式事務Spring
- day16-宣告式事務-02
- springboot專案-宣告式事務失效Spring Boot
- Spring宣告式事務控制原理之宣告式事務的重要元件在AOP中的應用Spring元件
- Springboot資料庫事務處理——Spring宣告式事務Spring Boot資料庫
- 五(二)、spring 宣告式事務xml配置SpringXML
- JavaEE(12)Spring整合Mybaits、宣告式事務JavaSpringAI
- Spring宣告式事務純xml模式回顧SpringXML模式
- 初學事務管理:SpringBoot+MybatisSpring BootMyBatis
- spring事物配置,宣告式事務管理和基於@Transactional註解的使用Spring
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- Spring宣告式事務的兩種實現方式Spring
- 筆記53-Spring jdbcTemplate&宣告式事務筆記SpringJDBC
- Spring事務的介紹,以及基於註解@Transactional的宣告式事務Spring
- Spring程式設計式和宣告式事務例項講解Spring程式設計
- MyBatis 事務管理解析:顛覆你心中對事務的理解!MyBatis
- Spring的事務管理入門:程式設計式事務管理(TransactionTemplate)Spring程式設計
- springmvc+mybatis +Jeesz 分散式架構SpringMVCMyBatis分散式架構
- springmvc + mybatis + ehcache + redis 分散式架構SpringMVCMyBatisRedis分散式架構
- MyBatis中的事務MyBatis
- Mybatis--事務控制MyBatis
- 保護億萬資料安全,Spring有“宣告式事務”絕招Spring
- 分散式鎖和spring事務管理分散式Spring
- Spring 程式設計式事務管理Spring程式設計
- SpringMVC整合MybatisSpringMVCMyBatis
- springmvc+mybatisSpringMVCMyBatis
- 微服務架構分散式事務管理問題微服務架構分散式
- 實現宣告式鎖,支援分散式鎖自定義鎖、SpEL和結合事務分散式
- 編碼式事務管理使用例項
- springmvc+mybatis+restful+webservice Jeesz分散式架構SpringMVCMyBatisRESTWeb分散式架構
- Spring/SpringBoot中的宣告式事務和程式設計式事務原始碼、區別、優缺點、適用場景、實戰Spring Boot程式設計原始碼