【事务】关于Spring事务加了@Transational还是无法启用的解决方案

扯淡最近的项目又被别人改了配置文件,还好写了一个数据前后处理顺序错误引发的BUG发现报异常时数据却被删除了惊醒怎么事务没了。

前言:

Spring配置之前写了有3个文件

①spring-context  一般管理配置文件注入 

<!-- springMVC配置 -->
<import resource="spring-mvc.xml"/>
<!-- mybatis配置 -->
<import resource="spring-mybatis.xml"/>
<!-- shiro配置 -->
<import resource="spring-shiro.xml"/>

或是一些不属于前端交互、不属于mybatis框架相关的东西 放这

②spring-mvc

一般就是前端相关,  如配置前后缀、编码格式、文件上传限制大小等等等等

③spring-mybatis

一般是配置DB连接信息  + 事务管理  + 持久层接口映射文件扫描, aop如果有的话一般和事务放一起。

 

被同事改了配置问题出在哪里呢,说到底我也不明白为什么他要改配置,出发点在哪里我到现在还没理解

原本:

1.spring-context里要配置自动注入到Spring容器, 但是要排除@Service这个Impl实现类里添加的注解,  原因是因为(本项目中)spring容器优先加载spring-context.xml产生的容器, 而此时并没有在spring-context中配置事务 ,  故生成的实例对象没有经过事务加强处理是没有事务能力的. 需要在spring-context中exclude掉, 其他照常扫描

<context:component-scan base-package="com.xxxx">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
	</context:component-scan>
2.spring-mybatis里要配置自动注入
<!-- 自动扫描com.XXX下的service.impl -->
	<context:component-scan base-package="com.xxxx.*" >
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>

这里由于我们项目中多个同级包中都可能有@Service , 甚至有些util工具类都加上了@Service作为接口使用,故为com.xxx.*, 此处各位根据自己的去定义即可. 

这里要exclude掉Controller是因为之前spring-context已经扫描过了.

 

要搞清楚这些配置的机制,  推荐读一下Spring源码的解析书籍.

虽然我也不是十分透彻这些机制,但是当全部人搞不定而一下子看出问题的时候...咳咳, 微笑一下就好.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值