ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springMVC的事务不回滚

2021-06-22 15:06:51  阅读:168  来源: 互联网

标签:xml applicationContext 事务 springMVC Transactional context 2015 不回


前言:今天在测试web管理端项目时,非常尴尬的是方法虽然用了事务注解,然而执行出错的情况下却没有进行事务回滚,也就是说@Transactional在springMVC的场景下失效了,通过调查和试验得出DispatcherServlet的context-dispatcher.xml和ContextLoaderListener的applicationContext.xml在进行context:component-scan标签设定时,需要互不影响。


最开始的时候,我在DispatcherServlet的context-dispatcher.xml配置以下内容

<context:component-scan base-package="com.honzh.spring"/>
在ContextLoaderListener的applicationContext.xml配置以下内容
<context:component-scan base-package="com.honzh.spring"/>
在这样的情况下,假如存在以下方法
@Transactional
	public void saveMember(Members members, HttpServletRequest request) throws Exception {
该方法内出现错误的时候,事务压根没有起到作用,修改以上两个文件到以下这样的效果

context-dispatcher.xml:

	<context:component-scan base-package="com.honzh.spring">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
  		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> 
	</context:component-scan>
applicationContext.xml:
	<context:component-scan base-package="com.honzh.spring">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> 
	</context:component-scan>
然后再测试saveMember方法,出错的情况下事务回滚了,可以看到事务回滚的日志了
Transaction synchronization rolling back SqlSession 
DEBUG 2015-02-05 17:30:11,074 org.springframework.jdbc.datasource.DataSourceTransactionManager: Releasing JDBC Connection 
DEBUG 2015-02-05 17:30:11,074 org.springframework.jdbc.datasource.DataSourceUtils: Returning JDBC Connection to DataSource
ERROR 2015-02-05 17:30:11,075 com.honzh.spring.controller.MemberController: 
java.lang.NullPointerException
可以看得出来:

有@Transactional注解的类需要通过父容器(applicationContext.xml)进行加载,而我原来的做法时,同时加载后,父容器和子容器发生冲突了,导致事务失效。

标签:xml,applicationContext,事务,springMVC,Transactional,context,2015,不回
来源: https://blog.51cto.com/u_2324584/2937291

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有