TransactionInterceptor支撑着整个事物功能的架构,TransactionInterceptor继承自MethodInterceptor,改类是从invoke方法开始
![](https://i-blog.csdnimg.cn/blog_migrate/c55066ec0b0148c852a6bbd271e1f9b8.png)
1、获取事物的属性
对于事物处理来说,最基础或者说最首要的工作是获取事物属性
![](https://i-blog.csdnimg.cn/blog_migrate/f9c93ebd61a7533e53df8a457aa1c50b.png)
2、加载配置中配置的TransactionManager
![](https://i-blog.csdnimg.cn/blog_migrate/ce5362b548f6c1c7cb7e29d5f5d2941a.png)
3、不同的事物处理方式使用不同的逻辑
![](https://i-blog.csdnimg.cn/blog_migrate/6d40d5fa9b38f2cad085d07abadccc0f.png)
4、在目标方法执行前获取事物并收集事物信息
![](https://i-blog.csdnimg.cn/blog_migrate/b8cf5822f80bf7f353081fa1db7adc0d.png)
5、执行目标方法
![](https://i-blog.csdnimg.cn/blog_migrate/440377d9dbd63717c6f52a8af270ecf9.png)
6、出现异常,尝试异常处理
并不是所有异常,spring都会将其回滚,默认支队RuntimeException、error回滚
![](https://i-blog.csdnimg.cn/blog_migrate/d6ce2346121e0e10ceb2787691ec20a1.png)
7、提交事物前的事物信息清除
![](https://i-blog.csdnimg.cn/blog_migrate/44c19d14d87d8cf4f735861ebd7a37f2.png)
8、提交事物
![](https://i-blog.csdnimg.cn/blog_migrate/63aba865d4eb9842f9c3a283eef4135d.png)