读书人

spring 诠注配置事务不回滚

发布时间: 2013-09-09 20:31:09 作者: rapoo

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 不然框架认不了的。

读书人网 >J2EE开发

热点推荐