Spring编程式事务回滚踩坑

  • 基于 TransactionDefinition、PlatformTransactionManager、TransactionStatus
    编程式事务管理是 Spring 提供的最原始的方式,通常我们不会这么写,但是了解这种方式对理解 Spring 事务管理的本质有很大作用。
  • 基于 TransactionTemplate 的编程式事务管理是对上一种方式的封装,使得编码更简单、清晰。
  • 基于 TransactionInterceptor 的声明式事务是 Spring
    声明式事务的基础,通常也不建议使用这种方式,但是与前面一样,了解这种方式对理解 Spring 声明式事务有很大作用。
  • 基于 TransactionProxyFactoryBean 的声明式事务是上中方式的改进版本,简化的配置文件的书写,这是 Spring
    早期推荐的声明式事务管理方式,但是在 Spring 2.0 中已经不推荐了。
  • 基于 和 命名空间的声明式事务管理是目前推荐的方式,其最大特点是与 Spring AOP
    结合紧密,可以充分利用切点表达式的强大支持,使得管理事务更加灵活。
  • 基于 @Transactional 的方式将声明式事务管理简化到了极致。开发人员只需在配置文件中加上一行启用相关后处理 Bean的配置,然后在需要实施事务管理的方法或者类上使用 @Transactional 指定事务规则即可实现事务管理,而且功能也不必其他方式逊色。
  • 全面分析 Spring 的编程式事务管理及声明式事务管理https://www.cnblogs.com/aliger/p/3898869.html

编程式事务,rollback之后的业务代码依然会执行,所以在rollback之后必须要return,才能阻止业务代码执行。

你可能感兴趣的:(事务)