1、ACD配置需要事务@Transactional(propagation = Propagation.REQUIRED)
2、B 方法上面配置新事务 @Transactional(propagation = Propagation.REQUIRES_NEW)
3、直接捕捉D方法的异常 不做处理 例如 代码这么写
A
B//配置另开事务@Transactional(propagation = Propagation.REQUIRES_NEW)
C
try{
D
}catch(Exception e){
// 随意
}
就可以导致回滚机制拿不到d抛出的异常,不做回滚处理。
在A,c处出现数据库异常会抛到外层方法导致回滚, 而B 只要执行了 跟他们事务隔离 不受影响。
另:如果java check异常也要加入到回滚机制 ,还需要配置rollbackfor
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)