spring+mybatis使用事务管理不生效原因分析
来源:互联网 发布:纯js实现前端分页插件 编辑:程序博客网 时间:2024/06/05 18:08
spring+mybatis使用事务管理不生效原因
- 检查spring的配置信息是否配置正确
<!-- 配置事务的通知:(事务的增强) --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- propagation :事务的传播行为 isolation :事务的隔离级别 read-only :只读 rollback-for:发生哪些异常回滚 no-rollback-for:发生哪些异常不回滚 timeout :过期信息 --> <tx:method name="transfer" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <!-- 配置切面 --> <aop:config> <!-- 配置切入点 --> <aop:pointcut id="pointcut" expression="execution(* com.xinrui.hospital.service.*.*(..))" /> <!-- 配置切面 --> <aop:advisor pointcut-ref="pointcut" advice-ref="txAdvice" /> </aop:config>
其中最容易出错的点是
expression=”execution(* com.xinrui.hospital.service..(..))”的写法,上述写法是正确的写法。
2.其次是在service层对于要管理的方法不要使用try-catch来捕获异常信息
package com.xinrui.hospital.service.impl;import javax.annotation.Resource;import org.apache.commons.lang.StringUtils;import org.springframework.stereotype.Service;import com.xinrui.hospital.bean.Account;import com.xinrui.hospital.dao.IAccountDao;import com.xinrui.hospital.service.IAccountService;/** * * @ClassName: AccountServiceImpl * @Description: 转账服务实现类 * @author 梁志成 * @date 2016年3月22日 下午5:26:36 * */@Service(value = "accountService")public class AccountServiceImpl implements IAccountService { @Resource(name = "accountDao") private IAccountDao accountDao; /** * * @Title: transfer * @Description: 转账 * @param @param out 转出账号 * @param @param in 转入账号 * @param @param money 转账金额 * @return void */ public boolean transfer(String out, String in, Double money) { if (StringUtils.isNotEmpty(out) && StringUtils.isNotEmpty(in)) { Account outAccount = new Account(); outAccount.setMoney(money); outAccount.setName(out); accountDao.outMoney(outAccount); int i = 1 / 0; Account inAccount = new Account(); inAccount.setMoney(money); inAccount.setName(in); accountDao.inMoney(inAccount); } return false; }}
上述是正确的配置。
3.确保事务交由spring管理
<!-- 配置由spring扫描的注解 --> <context:component-scan base-package="com.xinrui.hospital" use-default-filters="true"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
<!-- 配置由Spring-mvc扫描的注解 --> <context:component-scan base-package="com.xinrui.hospital.action" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
上述是正确的配置。
1 0
- spring+mybatis使用事务管理不生效原因分析
- springmvc mybatis 事务管理不生效原因
- 62. mybatis 使用PageHelper不生效【从零开始学Spring Boot】
- spring 事务管理不起作用原因分析与解决
- 62. mybatis 使用PageHelper不生效
- 62. mybatis 使用PageHelper不生效
- Solr配置maxBooleanClauses属性不生效原因分析
- Spring-Mybatis 子方法事务不生效问题
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- MyBatis+Spring 事务管理
- Spring+mybatis中事务管理
- mybatis+spring事务管理
- mybatis+spring 事务管理
- 《leetCode》:Factorial Trailing Zeroes
- 【HPU】[1730]字符串
- 正则表达式替换foreach_if_elseif_else
- 微博API iOS9的适配问题
- [Awt]——太空猛禽
- spring+mybatis使用事务管理不生效原因分析
- 数据结构上机2.1
- solr入门之创建solrcloud的collection索引集合
- 6CSS常见操作 对齐、尺寸、分类、导航栏、图片
- CSP考试 2015年9月第2题 日期计算 C语言实现
- 读书笔记----javascript类和模块
- ConcurrentHashMap原理分析
- RecyclerView单选
- 默认函数