![ed5e2eed2923085362a0de5f8a9683f5.png](https://i-blog.csdnimg.cn/blog_migrate/04551d85d7c03da61aefee59ae4ca62e.jpeg)
在业务方法开头开启事务,然后对我们的业务进行try-catch,假设没有异常则提交事务,如果出现异常,则在catch模块回滚事务
声明式事务由来
如果采用编程式事务,那么在任何需要事务的地方都要开启事务、try-catch、提交或者回滚事务,会导致重复编码、编写与业务无关的代码。基于Spring Aop思想,我们可以利用Aop的方式,对需要使用事务的方法进行增强,将公用的部分提取出来,那么就实现了声明式事务。
Spring提供的声明式事务
在需要使用事务的业务方法上添加@Transactional注解,那么就可以使用事务的特性,要么成功,要么失败
Spring Aop核心概念
- 切面:切面是由切点和通知组成
- 切点:用来匹配符合条件类或方法
- 通知:需要执行的操作
Spring声明式事务源码分析
基于Spring Boot自动配置原理,我们应该寻找xxxAutoConfiguration自动配置类,此处要寻找和事务相关的,那么自然是TransactionAutoConfiguration
自动配置
打开TransactionAutoConfiguration自动配置类
@Configuration@ConditionalOnBean(PlatformTransactionManager.class)@ConditionalOnMissingBean(AbstractTransactionManagementConfiguration.class)public static class EnableTransactionManagementConfiguration {@Configuration@EnableTransactionManagement(proxyTargetClass = false)@ConditionalOnProperty(prefix = "spring.aop