Spring事务执行流程
2015-06-05 19:01
531 查看
根据图中的信息 学习一下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,创建新事务,同事将线程中存在的事务挂起。
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,创建新事务,同事将线程中存在的事务挂起。
相关文章推荐
- SpringBoot执行流程
- 关于Spring 代码中执行事务回滚
- 关于Spring 代码中执行事务回滚
- [Spring3.x源码]事务(二)事务的执行
- spring执行事务提交后操作
- Spring hibernate 事务的流程
- Spring学习 - 1、ContextLoaderListener执行流程
- Struts 2 Spring Hibernate三大框架的执行流程以及原理
- 【Spring】SpringSecurity的过滤器执行流程
- Spring事务源码解析之事务执行篇
- MyBatis-Spring 执行SQL语句的流程
- Spring 注解事务处理流程源码分析
- shiro学习笔记:整合spring之拦截器链执行流程
- SpringMVC DispatcherServlet执行流程及源码分析
- 事务的执行流程
- Session执行事务的基本流程
- ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
- Spring事务中Hibernate语句执行的顺序
- 流程图解Spring Framework(九) Spring 如何进行事务管理的?
- Spring Boot 执行流程