@Transactional 学习
1.spring声明式事务 注解. 加上这个操作数据库的方法就自动配置事务,失败自动回滚等.
不必自己配置事务,不必把事务管理冗杂到逻辑代码里.
2.底层逻辑是,aop+动态代理,生成一个代理对象,调用事务拦截器
TransactionInterceptor 拦截器把自动提交关了,然后等接口执行完后,在commit或rollback。
本质就是通过拦截器关闭自动提交的标记
调用链路是:
代理对象 -> TransactionInterceptor -> 你的业务方法 -> 异常处理
3.失效的原因就是没生成代理对象,直接调用了业务方法。
1.同一个类中的方法调用,直接通过this调用了,因为对象是创建好的。
2.final方法,Spring无法为final方法创建代理
3.继承,子类覆盖了父类中被@Transactional注解的方法,然后通过super调用父类的方法
下班记得打卡

浙公网安备 33010602011771号