[辅助篇01]全局事务控制+ AOP(事务处理, 日志等操作)项目中使用经验总结

78 阅读1分钟

一、 事务控制(全局V3阶段使用)


1. 原子性 一个方法中的业务要么都成功 要么都失败
2. @Transactional 这个注解用法
1.如果控制的方法出现了运行时异常则事务自动的回滚.
2.如果控制的方法 检查异常(编译异常), 事务不会自动回滚,Spring任务程序既然已经提示需要异常的处理.则默认由程序员自己控制.Spring不负责管理.

2.注解属性
rollbackFor: 遇到什么类型, 异常回滚事务,
noRollbackFor: 遇到什么类型的异常 事务不回滚.
关于属性说明: 一般工作中都采用默认策略,特殊条件下才使用该配置.
@Transactional(rollbackFor = Exception.class)

//全局异常处理,内部依然采用环绕通知的方式
//异常处理之后返回的JSON串.
//该全局异常处理机制,捕获Controller层的异常(其它层向上抛出异常)
@RestControllerAdvice
public class MyException {
    /**
     * 业务: 如果后端报错,应该及时提示前端用户,返回统一的对象
     *      SysResult对象. status=201/msg="xxx失败"
     * 注解说明:
     *      @ExceptionHandler(RuntimeException.class)
     *      当遇到某种异常时,全局异常处理机制有效!!
     */
    @ExceptionHandler(RuntimeException.class)
    public Object exception(Exception e){
        //1.应该打印异常信息.
        e.printStackTrace();
        //2.返回特定的响应数据.
        return SysResult.fail();
    }
}