spring源码深度解析-Spring源码阅读-Spring事务

        简要说一下流程,有的细节略过或者简化了。

        Spring事务其实是使用了Spring自定义标签的解析功能和SpringAOP功能。

        Spring定义了一个自定义标签,然后定义了这个标签对应的Parser。这个parser里面注册了一个AutoProxyCreator,也注册了一个Advisor(里面包含一个Interceptor)。

        然后涉及Bean的加载过程,所有bean在创建时候都会包含一个流程,就是调用BeanPostProcessor的postProcessAfterInitialization方法。我们之前注册的这个AutoProxyCreator就是BeanPostProcessor的一个实现,它的postProcessAfterInitialization方法其实是就是获取增强然后对这个bean创建代理。那其中获取到的增强就包括我们之前注册的那个Advisor。这里面有个判断增强是否匹配的过程,怎么标记我们需要增强的bean呢,就是加事务注解,包含事务属性。有检测到事务属性,就说明这个bean需要这个增强。

        增强完了之后,就是实际调用到这个bean的方法的时候,实际上调用的是那个代理,那个代理实际上要调用我们之前提到的那个Interceptor的invoke方法。这个方法里面,就是先创建事务,然后调用实际被增强的这个方法,然后异常处理包括回滚,然后提交事务。创建事务的流程是根据我们配置的事务属性的传播属性,然后对应不同的回滚流程,也对应不同的提交流程。

        整个流程简单地说完了。下面是看书时候整理的具体的图可以参考一下。

        

你可能感兴趣的:(Spring,Spring源码,Spring事务,Spring源码,Spring,Spring事务,Spring源码深度解析)