首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

spring 诠注配置事务不回滚

2013-09-09 
spring 注解配置事务不回滚各位大神 现在有一个需求class AService { public void ma(){]mb()mc()mb()m

spring 注解配置事务不回滚
各位大神 
现在有一个需求

class AService {

 public void ma(){]
  mb();
  mc();
  mb();
  mc();
 }
 private void mb(){}
 private void mc(){}
}

需要:mb 和 mc 单独提交或回滚 互不影响  mb 或mc 要单独执行多次

这个该怎么配置spring 诠注配置事务不回滚
[解决办法]
是用NEW_REQUIRED
[解决办法]
看一下事务广播设置
[解决办法]

引用:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
       <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异常抛出触发事务回滚策略失效!

[解决办法]
去掉try catch 不然框架认不了的。

热点排行