我有一个带有@Service
注解的类,其中有一个@Transactional
方法,该方法调用了另一个服务上的另一个@Transactional
方法。大概就是这样:
@Service
public class AService {
@Autowired
BService b;
@Autowired
ARepository aRepo;
@Transactional
public void methodOne(){
try{
b.methodTwo();
}catch(RuntimeException e){}
aRepo.save(new A());
}
}
@Service
public class BService{
@Transactional
public void methodTwo(){
if(true)
throw new RuntimeException();
}
}
我希望可以插入实体A,但如果嵌套事务抛出异常,即使在 AService.methodOne()
处理了该异常,插入也将被拒绝。
我可以使用 @Transactional(propagation = Propagation.REQUIRES_NEW)
注释 methodTwo()
。但这样会影响性能。