首先据我所知spring支持编程式事务管理和明式事务管理两种方式
1.首先编程式事务控制
需要使用transactionTemplate进行实现,但这种方式对业务代码有侵入性,所以在项目中很少用到
2.声明式事务管理
是建立在aop之上的。本质是通过aop功能,对方法前和方法后进行拦截,然后将事务处理的功能编写组织到拦截的方法里面,也就是在目标方法开始前加入一个事务,在执行完目标方法后,根据执行情况提交或者回滚事务
而声明式事务的最大优点就是不需要在逻辑代码中夹杂管理实务的代码,只需要在配置文件里面做相关事务规则声明,或者通过@Transactional注解的方式,就可以将事务规则应用到业务逻辑里面。