开篇:为什么 @Transactional 有时候不生效?
你一定遇到过这种场景:明明方法上加了 @Transactional,数据库操作却没有回滚。你反复检查代码,确认异常确实抛出了,可事务就是不起作用。
这大概是 Spring 开发中最经典的"灵异事件"了。而且它往往发生在最不该出问题的时候——线上已经跑了一段时间,某位同事改了一行代码,事务就悄悄失效了。
要理解它为什么不生效,就得先搞清楚 Spring 事务到底是怎么工作的。这篇文章会带你从原理出发,一步步揭开声明式事务的面纱。
一、Spring 事务基础
大约 12 分钟