Spring事务执行流程

根据图中的信息 学习一下Spring的事务管理流程:

    1、 事务配置信息主要是通过拦截器和Spring AOP发生作用的,具体流程如图中所示:
        监听器TransactionAttributeSourceAdvisor通过正则匹配,将事务方法的属性配置以Properties的形式读入到TransactionAttributeSource中,然后TransactionAttributeSource又通过setTransactionAttribute()方法将事务封装成TransactionAttribute对象并将事务方法和对应的对象信息存储到nameMap中。

   2、监听器TransactionAttributeSourceAdvisor中依赖一个拦截器TransactionInterceptor,这个拦截器管理事务的具体操作:
       
        TransactionInterceptor通过invoke方法读取执行方法的事务信息,并读取TransactionManager事务管理类配置进行事务处理,

        加入读取的TransactionManager事务管理类为DataSourceTransactionManager,他根据配置的数据源信息DataSource连接数据源,并根据事务的配置信息进行事务的创建、挂起、提交和回滚。同时生成对象TransactionStatus进行保存事务处理的基本信息。


      TransactionStatus和拎一个事物对象TransactionInfo共同作用,决定底层事务的具体实现,TransactionInfo中封装了处理事务的配置信息及TransactionStatus对象,并通过ThreadLocal技术和当前线程进行绑定:创建新事务时,如果当前线程中有事务--1、如果事务的传播属性为never,那么会抛出异常;2、如果传播属性为Propagation_not_support,则将事务挂起;3、传播属性为Propagation_requires_new,创建新事务,同事将线程中存在的事务挂起。
      

猜你喜欢

转载自wangxinhong4468.iteye.com/blog/2217421