@Transactional 学习
1.spring声明式事务 注解. 加上这个操作数据库的方法就自动配置事务,失败自动回滚等.
不必自己配置事务,不必把事务管理冗杂到逻辑代码里.
2.底层逻辑是,aop+动态代理,生成一个代理对象,调用事务拦截器
TransactionInterceptor 拦截器把自动提交关了,然后等接口执行完后,在commit或rollback。
本质就是通过拦截器关闭自动提交的标记
调用链路是:
代理对象 -> TransactionInterceptor -> 你的业务方法 -> 异常处理
3.失效的原因就是没生成代理对象,直接调用了业务方法。
1.同一个类中的方法调用,直接通过this调用了,因为对象是创建好的。
2.final方法,Spring无法为final方法创建代理
3.继承,子类覆盖了父类中被@Transactional
注解的方法,然后通过super
调用父类的方法
下班记得打卡
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】