声明式事务@Transactional
声明式事务@Transactional失效场景
- 有异常需要抛出,如果catch异常后没有进行throw那么不会进行事务回滚,因为异常已经被捕获所以对于@Transactional而言方法最终无异常抛出;
-
- 方法必须是public修饰符,如果不是public修饰也不会报错,只是注解不会生效(因为动态代理jdk动态代理处理接口不包含非public方法,cglib处理public方法);
- 通过this调用的方法注解是不生效的,通过this在当前类的内部进行调用不会创建新的代理,因此注解不会生效;
-
- springboot通过自动装配的方式提供了事务管理的相关依赖,但是如果我们业务场景复杂并且遇到多数据源场景,那么需要结合实际业务来灵活使用。
- 使用声明式事务@Transactional的时候,可以通过配置事务管理器(value)和事务传播行为(propagation)的属性来控制满足自己的业务场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了