spring将一个方法加入事务管理在方法或这类上@Transactional 就行了。
需要注意:
- 同类中yy方法直接调用xx,事务不生效。
- xx方法需要public权限。
- 抛出RuntimeException时生效,业务代码1没有编译时异常,可以生效,业务代码2有编译时异常,需要手动catch,手动回滚。
@Transactional public void xx(){
业务1; try { 业务2; } catch (Exception e) { //回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } }
private void yy(){
//事务无效
xx();
}