Spring事务的那些坑,这里都给你总结好了!
Spring框架已是JAVA项目的标配,其中Spring事务管理也是最常用的一个功能,但如果不了解其实现原理,使用姿势不对,一不小心就可能掉坑里。 为了更透彻的说明这些坑,本文分四部分展开阐述:第一部分简单介绍下Spring事务集成的几种方式;第二部分结合Spring源代码说明Spring事务的实现原理;第三部分通过实际测试代码介绍关于Spring事务的坑;第四部分是对本文的总结。 一、Spring事务管理的几种方式: Spring事务在具体使用方式上可分为两大类: 1. 声明式 基于 TransactionProxyFactoryBean的声明式事务管理 基于 <tx> 和 <aop> 命名空间的事务管理 基于 @Transactional 的声明式事务管理 2. 编程式 基于事务管理器API 的编程式事务管理 基于TransactionTemplate 的编程式事务管理 目前大部分项目使用的是声明式的后两种: 基于 <tx> 和 <aop> 命名空间的声明式事务管理可以充分利用切点表达式的强大支持,使得管理事务更加灵活。 基于 @Transactional 的方式需要实施事务管理的方法或者类上使用 @Transactional 指定事务规则即可实现事务管理,在Spring Boot中通常也建议使用这种注解方式来标记事务。 二、Spring事务实现机制