1.事务传播机制
2.事务异常处理
spring事务只对RuntimeException奏效
通过aop来获取异常,如果手动捕获则不会回滚
- 正常回滚
@PostMapping("/test")
@Transactional
public void test() {
transPlatformAccessMapper.insertTest();
int i = 1/0;
}
- 不会回滚
@PostMapping("/test")
@Transactional
public void test() {
try{
transPlatformAccessMapper.insertTest();
int i = 1/0;
}catch (Exception e){
e.printStackTrace();
}
}
2.1 手动回滚
- 回滚点
@PostMapping("/test")
@Transactional
public void test() {
//设置回滚点,只回滚以下异常
Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
try{
transPlatformAccessMapper.insertTest();
int i = 1/0;
}catch (Exception e){
e.printStackTrace();
//手工回滚到回滚点
TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
}
}
- 全部回滚
@PostMapping("/test")
@Transactional
public void test() {
try{
transPlatformAccessMapper.insertTest();
int i = 1/0;
}catch (Exception e){
e.printStackTrace();
// 全部回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}