事务执行时通过创建一个aop代理对象,加上一些拦截器执行链实现的。
此为事务配置相关的重要信息
而使用的data是spring jdbc提供的,这里也可以配置成druid,c3p0等等数据库连接池。
如图所示,如果有aop参与的类,将会创建的bean对象是一个代理对象,而如果没有aop参与的创建的bean对象直接就是MyServiceImpl的实例对象
---------------------注意这里创建一个MyServiceImpl的代理对象操作,之后将这里代理对象放入到对应的bean缓存中,到此spring事务相关的代理对象创建完毕,下面开始spring事务调用讲解
最终调用的时候,会走到这个方法里面,实现对于事务的处理操作,完成整个事务的处理过程。
在方法执行之前执行aop前置通知方法
如果没有后置将会走到这个方法,详细请看aop实现原理相关博客
最终会走到我们的事务处理的相关方法,这里会完成事务的提交与回滚操作,以及事务隔离级别,spring的事务传播行为的操作,实现spring事务的功能。
附加信息(下面为spring事务处理大致流程图)
到此spring 事务相关原理解析完毕
相关博客参考
https://my.oschina.net/mengyuankan/blog/3003783 讲spring事务隔离别与传播行为源码相关,较为详细
https://www.cnblogs.com/rouqinglangzi/p/12764926.html 讲spring事务大致原理