TransactionAspectSupport类里面的createTransactionIfNecessary方法用于创建事物
![](https://i-blog.csdnimg.cn/blog_migrate/137314c902088e5b92900b551dbc0295.png)
1、使用DelegatingTransactionAttribute封装传入的TransactionAttribute实例
用于提供更多的功能
![](https://i-blog.csdnimg.cn/blog_migrate/b0298265e40d3a51af03b14d1ce94a5f.png)
2、获取事物
事物处理当然是以事物为核心,获取事物就是最重要的事情
![](https://i-blog.csdnimg.cn/blog_migrate/953f2a8a9d06e515020f69bb64a00f86.png)
2.1、获取事物
创建对应的事物实例,这里使用的是DataSourceTransactionManager
![](https://i-blog.csdnimg.cn/blog_migrate/1f02bf6a36ea169b116f8ed5a12f2b4c.png)
2.2、如果当前线程存在事物,则转向嵌套事物的处理
![](https://i-blog.csdnimg.cn/blog_migrate/913c98ae1c1742ad0d1fd9a881bfc75f.png)
2.3、事物超时设置验证
![](https://i-blog.csdnimg.cn/blog_migrate/df0efee0f944789e15a7a24838edb84c.png)
2.4、事物PropagationBehavior属性验证的
![](https://i-blog.csdnimg.cn/blog_migrate/64f29bf3977c6919a293e2418e1bba6c.png)
2.5、构建DefaultTransactionStatus
![](https://i-blog.csdnimg.cn/blog_migrate/76c7b6f18035f5a00bfb8bb7be268133.png)
2.6、完善transaction(设置ConnectionHolder(),隔离级别,timeout)
3、构建事物信息
![](https://i-blog.csdnimg.cn/blog_migrate/5ecb475ade7abcee449a00f3631df7ed.png)