Spring+SpringMVC配置事務(wù)管理無(wú)效原因及解決辦法詳解
一般我們?cè)赟pring的配置文件application.xml中對(duì)Service層代碼配置事務(wù)管理,可以對(duì)Service的方法進(jìn)行AOP增強(qiáng)或事務(wù)處理如事務(wù)回滾,但是遇到一個(gè)問(wèn)題,在Controller類中調(diào)用Service層方法,配置的事務(wù)管理會(huì)失效,查詢相關(guān)資料發(fā)現(xiàn)原因。其實(shí)Spring和SpringMVC倆個(gè)容器為父子關(guān)系,Spring為父容器,而SpringMVC為子容器。也就是說(shuō)application.xml中應(yīng)該負(fù)責(zé)掃描除@Controller的注解如@Service,而SpringMVC的配置文件應(yīng)該只負(fù)責(zé)掃描@Controller,否則會(huì)產(chǎn)生重復(fù)掃描導(dǎo)致Spring容器中配置的事務(wù)失效。
因此正確的配置方式應(yīng)該為:
Spring的配置文件:application.xml
<context:component-scan base-package="org.bc.redis" use-default-filters="true">
<!-- 排除含@Controller注解的類 -->
<context:exclude-filter type="annotation" expression="org.bc.redis.controller.UserController"/>
</context:component-scan>
或者
<!-- 指定掃描的包,避開(kāi)包含@Controller注解的包 --> <context:component-scan base-package="org.bc.redis.service" use-default-filters="true"> </context:component-scan>
SpringMVC的配置文件:springmvc.xml
<!-- 只掃描含@Controller注解的包,避免重復(fù)掃描 --> <context:component-scan base-package="org.bc.redis.controller" use-default-filters="true"> </context:component-scan>
最后
經(jīng)過(guò)測(cè)試,其實(shí)問(wèn)題主要在于SpringMVC的配置文件掃包范圍,Spring的配置文件就算也掃了@Controller注解,但是在SpringMVC會(huì)重新掃描一次,事務(wù)管理的Service只要沒(méi)被重新掃描就不會(huì)出現(xiàn)事務(wù)失效問(wèn)題。
總結(jié)
以上就是本文關(guān)于Spring+SpringMVC配置事務(wù)管理無(wú)效原因及解決辦法詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
通過(guò)idea創(chuàng)建Spring Boot項(xiàng)目并配置啟動(dòng)過(guò)程圖解
這篇文章主要介紹了通過(guò)idea創(chuàng)建Spring Boot項(xiàng)目并配置啟動(dòng)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
PowerJob的OmsLogHandler工作流程源碼解析
這篇文章主要為大家介紹了PowerJob的OmsLogHandler工作流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12
解決SpringCloud Gateway采用OpenFeign遠(yuǎn)程調(diào)用失敗的問(wèn)題
在使用SpringCloud網(wǎng)關(guān)進(jìn)行統(tǒng)一鑒權(quán)和認(rèn)證過(guò)程中,通過(guò)OpenFeign遠(yuǎn)程調(diào)用鑒權(quán)服務(wù)器接口時(shí)可能會(huì)遇到遠(yuǎn)程調(diào)用失敗的問(wèn)題,這通常是因?yàn)镠ttpMessageConverters沒(méi)有被正確注入到Spring容器中2024-09-09
spring/springboot整合curator遇到的坑及解決
這篇文章主要介紹了spring/springboot整合curator遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Java?hutool?List集合對(duì)象拷貝示例代碼
這篇文章主要介紹了Java?hutool?List集合對(duì)象拷貝的相關(guān)資料,文章還分享了在實(shí)現(xiàn)過(guò)程中遇到的一些問(wèn)題,并強(qiáng)調(diào)了閱讀源碼和正確配置CopyOptions的重要性,需要的朋友可以參考下2024-12-12

