各位大神
现在有一个需求class AService { public void ma(){]
mb();
mc();
mb();
mc();
}
private void mb(){}
private void mc(){}
}需要:mb 和 mc 单独提交或回滚 互不影响 mb 或mc 要单独执行多次这个该怎么配置spring
现在有一个需求class AService { public void ma(){]
mb();
mc();
mb();
mc();
}
private void mb(){}
private void mc(){}
}需要:mb 和 mc 单独提交或回滚 互不影响 mb 或mc 要单独执行多次这个该怎么配置spring
解决方案 »
- sql ,hql 如何实现多个条件查询自由动态拼接
- 金雅拓的token保安编码器谁用过??求助大神
- java xml DOCTYPE 问题
- java实现省级联
- 本地dao和远程调用jersey 事务管理
- CMP问题
- Tomcat配置servlet的一点问题:
- Sun.Java.Desktop.System怎么安装
- 请问如何在SQL语句中将NUMBER 类型的值为null 转化为0
- 关于spring MVC
- COS上传到tomcat的文件不能删除
- Virgo Tomcat Server :Archive for required library cannot be read or is not a val
要求每执行一次mb 或 mc 都要单独提交或回滚一次
大神们 怎么配啊 先谢谢了
<tx:method name="add*" propagation="REQUIRED" />expression="execution(public * com.xxx.controller.*.*(..))" />
限制哪些方法加入事务回滚
不行啊 因为我这些方法都在service 中 我在 ma()方法中 加了catch了 ma中不会向外抛异常,
public void ma(){]
mb(); 1
mc(); 2
mb(); 3
mc(); 4
}
就算 1 处执行失败 那 1 处回滚 ,
然后再执行 2处。 就是说每一个方法的执行结果都不影响其它方法,不能在 ma 向外抛异常
<tx:attributes>
<tx:method name="save*" propagation="REQUIRES_NEW" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="interceptorPointCuts" expression="execution(public * com.test.service.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="interceptorPointCuts" />
</aop:config>
----------------------------------------------------------------------------------
@Service
public class TestServiceImpl implements ITestService { @Resource
private ITestDao routeDao; @Override
public boolean load() {
for (int i = 0 ;i < 10 ;i ++){
try {
saveA();
} catch (Exception e) {
e.printStackTrace();
}
}
} @Override
public void saveA() {
routeDao.saveA();
}
}
-------------------------------------------------------------------------
各位大神 看一下我的代码 问题出在什么地方?让saveA(); 单个能提交或回滚
你既然使用了Spring的事务管理就不要再用Try-catch了;
在Spring中如果业务方法被try-catch包起来,则这个业务方法就脱离了Spring事务的管理,为什么?
因为用了try-catch就不会有任何异常从业务方法中抛出,而是被自身捕获并吞掉了,导至Spring异常抛出触发事务回滚策略失效!
因为这是业务逻辑的部分 我不想放在action层中做 for (int i = 0 ;i < 10 ;i ++){
try {
saveA();
} catch (Exception e) {
e.printStackTrace();
}
}再有没有更好办法解决呢?先谢谢上面回答的几位大神