Spring 声明式事务

spring/declarative_transaction2026-10-16 18:03:58

Spring 声明式事务通过配置或注解把事务边界应用到方法调用,实际效果取决于事务管理器、代理及调用路径。

代理边界

在默认代理模式下,外部通过代理进入的方法调用才能被相应拦截。同一对象内部直接调用带注解的方法,通常不会触发新的代理事务行为,因此仅看到 @Transactional 不能证明事务生效。

回滚与资源范围

默认回滚规则和 checked exception 的处理需要明确配置;异常被吞掉后也可能无法按预期回滚。还应检查传播方式、是否选择了正确事务管理器,以及数据库操作是否参与同一资源事务。

数据库事务不会自动覆盖远程 HTTP 或任意消息副作用。只读标记也不能简单视为所有数据库都会执行的禁止写入权限。

参考资料

本页目录