springboot的项目中,如果用try catch包裹的代码块,由于异常被捕获,导致标记了@Transactional无法生效,那么如何进行处理这个问题:
- 确保启动类中已经标记了@EnableTransactionManagement注解
- 方法上,添加注解@Transactional(rollbackFor = Exception.class)
- 方法体中,try catch 添加异常处理模块
@Transactional(rollbackFor = Exception.class)
@Override
public R test(String id) {
try {
//数据库的入库操作
} catch (Exception e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
log.error("入库失败:", e);
}
return R.ok("入库失败");
}
- catch代码块中添加TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();如有异常,则进行回滚处理。