亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

SpringMVC+MyBatis聲明式事務管理

2019-11-26 15:00:59
字體:
來源:轉載
供稿:網友
采用的基本搭建環境:SpringMVC、MyBatis、MySQL、tomcat
        Spring事務管理分解了傳統的全局事務管理和本地事務管理的劣勢,使得在任何環境中都可以使用統一的事務管理模型,你可以寫一次代碼,然后在不同的環境從你的代碼里面配置不同的事務管理策略,Spring提供兩種事務管理策略:一種是聲明式事務管理策略,另一種是編程式事務管理策略,這里主要介紹聲明式事務管理策略
由于采用的是SpringMVC、 MyBatis,故統一采用了標注來聲明Service、Controller
由于服務器啟動時的加載配置文件的順序為web.xml---root-context.xml(Spring的配置文件)---servlet-context.xml(SpringMVC的配置文件),由于root-context.xml配置文件中Controller會先進行掃描裝配,但是此時service還沒有進行事務增強處理,得到的將是原樣的Service(沒有經過事務加強處理,故而沒有事務處理能力),所以我們必須在root-context.xml中不掃描Controller,配置如下:
<!-- 自動掃描組件,這里要把controler下面的 controller去除,他們是在spring3-servlet.xml中配置的,如果不去除會影響事務管理的。  -->  <context:component-scan base-package="com.sence">  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />   .</context:component-scan>  <!-- 自動掃描組件,這里要把controler下面的 controller去除,他們是在spring3-servlet.xml中配置的,如果不去除會影響事務管理的。  --> <context:component-scan base-package="com.sence"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />  </context:component-scan>
在servlet-context.xml中掃描Controller同時不掃描Service,配置如下:
<!-- 掃描所有的controller 但是不掃描service-->  <context:component-scan base-package="com.sence">  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />  </context:component-scan>  <!-- 掃描所有的controller 但是不掃描service--> <context:component-scan base-package="com.sence"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
下面就可以進行配置聲明式事務管理了,配置如下:
<!-- transaction manager, use DataSourceTransactionManager -->  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  <property name="dataSource" ref="dataSource" />  </bean>  <!-- spring declarative transaction management -->  <aop:config>  <aop:pointcut id="fooServiceMethods"   expression="execution(* com.sence.*.service.impl.*.*(..))"/>   <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceMethods"/>   </aop:config>  <tx:advice id="txAdvice" transaction-manager="txManager">  <tx:attributes>  <tx:method name="find*" read-only="true"/>  <tx:method name="load*" read-only="true"/>  <tx:method name="*" rollback-for="CustomException"/>  </tx:attributes>  </tx:advice>  <!-- transaction manager, use DataSourceTransactionManager --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- spring declarative transaction management --><aop:config> <aop:pointcut id="fooServiceMethods"  expression="execution(* com.sence.*.service.impl.*.*(..))"/>  <aop:advisor advice-ref="txAdvice" pointcut-ref="fooServiceMethods"/>  </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes> <tx:method name="find*" read-only="true"/> <tx:method name="load*" read-only="true"/> <tx:method name="*" rollback-for="CustomException"/> </tx:attributes> </tx:advice>
到此我的配置完成了,但是經過我的測試,當我往MySQL數據庫表批量增加對象時,當其中一個對象出現錯誤,拋出CustomException事務卻不回滾,這個真是令人頭疼,于是我繼續查找,步驟如下:
1. 查找是否聲明式事務管理有誤,如切入點寫錯了
2. 查找Controller掃描部分配置是否正確
但是這兩點我都查了,還是事務沒有回滾,這個時候我沒辦法了,只能動用終極武器了:查看源碼,開始debug程序,發現進入到了事務,并且出現了異常,捕獲后進入到了回滾程序,但是數據庫卻沒有回滾,為了避免Spring自己的AbstractPlatformTransactionManager的干擾,我自己定制了一個事務管理類并繼承配置文件中的DataSourceTransactionManager類,這樣可以清楚的看到程序的運行軌跡,繼續DEBUG,還是出現了異常,捕獲后進入到了回滾程序,但是數據庫卻沒有回滾,此刻我開始懷疑MySQL數據庫的事務支持功能了,于是網上查找MySQL對事務的支持,發現MySQL4.0以后可以支持事務,但是MySql的數據表分為兩類,一類是傳統的數據表,另一類則是支持事務的數據表。支持事務的數據表分為兩種:InnoDB和BerkeleyDB
使用一下命令:show create table ***  查看我的數據庫表的屬性才發現我的表原來是傳統類型的表,于是我使用navicat更改了表的類型為:InnoDB,然后運行程序發現事務回滾了
到此SpringMVC聲明式事務管理配置完成,并運行正確
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品网站在线播放gif| 91久久久久久久一区二区| 2020国产精品视频| 国产亚洲人成a一在线v站| 热re91久久精品国99热蜜臀| 中文字幕亚洲一区在线观看| 色综合久久中文字幕综合网小说| 97视频在线观看视频免费视频| 国产美女搞久久| 国产精品视频网| 久久国产精品久久国产精品| 色爱av美腿丝袜综合粉嫩av| 国产精品激情av在线播放| 国产精品久久久久久一区二区| 成人国产精品av| 欧美成人h版在线观看| 97视频在线观看免费高清完整版在线观看| 欧美与欧洲交xxxx免费观看| 欧美人成在线视频| 亚洲人成电影网| 亚洲一级免费视频| 欧美日韩激情小视频| 日本亚洲欧美成人| 中文字幕av一区| 日韩电视剧在线观看免费网站| 国产中文字幕亚洲| 精品亚洲精品福利线在观看| 国产精品白嫩美女在线观看| 国产日韩精品在线播放| 国产精品第一第二| 在线观看久久久久久| 久久久国产在线视频| 亚洲国产天堂久久综合网| 亚洲欧美制服中文字幕| 亚洲精品99久久久久中文字幕| 亚洲www在线观看| 亚洲一区二区中文字幕| 亚洲精品久久久久久下一站| 九九久久久久久久久激情| 久久精品国产一区二区三区| 日韩精品免费在线视频观看| 欧美精品激情blacked18| 2019av中文字幕| 欧美性极品少妇精品网站| 久久躁狠狠躁夜夜爽| 午夜精品久久久久久久白皮肤| 精品国产电影一区| 福利精品视频在线| 久久久在线视频| 欧美国产日本在线| 欧美激情精品久久久久| 亚洲日本成人网| 亚洲图片欧美午夜| 国产精品av在线播放| 亚洲欧美日韩国产中文| 亚洲激情视频在线| 亚洲毛片在线观看.| 国产精品jvid在线观看蜜臀| 98精品在线视频| 欧美成人黑人xx视频免费观看| 亚洲欧美一区二区三区在线| 91中文在线观看| 岛国av一区二区三区| 欧美一区深夜视频| 久久91亚洲精品中文字幕奶水| 黄色成人av在线| 中文字幕久热精品在线视频| 亚洲欧美一区二区三区四区| 日韩欧美中文在线| 欧美激情中文网| 欧美日韩精品在线视频| 精品中文字幕乱| 亚洲一区美女视频在线观看免费| 97在线精品视频| 九九久久久久久久久激情| 日韩精品亚洲视频| 国产日韩中文在线| 日韩亚洲精品视频| 欧美激情在线一区| 91影院在线免费观看视频| 伊人久久久久久久久久久| 国产午夜精品免费一区二区三区| 亚洲男人天堂久| 在线播放精品一区二区三区| 亚洲精品在线视频| 亚洲免费影视第一页| 日韩成人激情影院| 日韩av在线网站| 日韩一区二区三区国产| 久久99精品久久久久久噜噜| 亚洲综合第一页| 欧美国产在线视频| 亚洲女人被黑人巨大进入al| 国产精品久久久久久久久影视| 国产成人亚洲综合| 久久精品视频免费播放| 九九热99久久久国产盗摄| 欧美激情精品久久久久久蜜臀| 国产精品麻豆va在线播放| 久久亚洲国产成人| 国产精品视频久久久| 亚洲无亚洲人成网站77777| 91国产美女视频| 欧美性色视频在线| 中文在线资源观看视频网站免费不卡| 久久精品国产久精国产思思| 91综合免费在线| 成人黄色午夜影院| 亚洲自拍在线观看| 亚洲免费视频网站| 黑人巨大精品欧美一区二区免费| 姬川优奈aav一区二区| 亚洲精品视频网上网址在线观看| 久久91亚洲精品中文字幕| 日韩免费看的电影电视剧大全| 亚洲精品成人网| 国产精品www| 中国日韩欧美久久久久久久久| 91久久夜色精品国产网站| 中文字幕av日韩| 日韩在线视频导航| 国产999精品| 亚洲综合中文字幕在线观看| 57pao国产成人免费| 国产va免费精品高清在线| 午夜精品一区二区三区在线视| 国产成人一区三区| 亚洲欧洲视频在线| 日韩一区二区三区在线播放| 国产偷国产偷亚洲清高网站| 欧洲永久精品大片ww免费漫画| 亚洲缚视频在线观看| 欧美性猛交xxxxx免费看| 国产精品高清在线观看| 久久久国产一区二区| 黑人精品xxx一区一二区| 国产在线观看精品一区二区三区| 国产精品6699| 国产精品自拍视频| 久久夜色精品国产欧美乱| 国内精品400部情侣激情| 大胆欧美人体视频| 日韩中文有码在线视频| 亚洲美女av在线播放| 亚洲乱码一区二区| 国产精品综合久久久| 久久精彩免费视频| 日韩精品视频免费专区在线播放| 欧美插天视频在线播放| 丝袜美腿亚洲一区二区| 国产在线视频不卡| 亚洲影视中文字幕| 欧美成人精品在线播放| 日韩av在线导航| 国产成人亚洲综合91精品| 亚洲成人999| 亚洲人成电影在线| 亚洲精品一区二区在线| 亚洲国产精久久久久久久| 国产精品99久久久久久白浆小说| 亚洲欧美成人在线| 国产精品老牛影院在线观看| 国产亚洲精品美女| 亚洲午夜性刺激影院|