spring 技术内幕阅读笔记 - spring 事务处理

声明式事务处理基本过程

通过ioc容器 和TransactionProxyFactoryBean对事务管理进行配置

  1. 读取和处理IoC容器配置的事务处理属性,并转化为Spring事务处理需要的内部数据结构。

  2. spring事务处理模块实现统一的事务处理过程。

  3. 底层事务具体实现。

事务处理拦截器的配置

问题1:spring的TransactionInterceptor配置实在什么地方启动的,从而成为Advisor通知器中的一部分呢?

在IoC完成依赖注入的时通过initializeBean方法被调用

事务处理配置的读入

问题1:如何判断是否需要进行事务处理

TransactionAttributeSourcePointcut  matches 方法

问题2:matches 匹配过程会用到 TransactionAttributeSource,这个属性在什么地方注入的

TransactionInterceptor 的基类 TransactionAspectSupport  通过 setTransactionAttributes 注入

NameMatchTransactionAttributeSource 作为 TransactionAttributeSource 具体实现

问题3:NameMatchTransactionAttributeSource  是怎样实现事务处理属性读入匹配

读入,遍历transactionAttributes 获得 事务方法名及事务属性 放到 map中(nameMap)

匹配,应用调用目标方法的时候,需要判断这个方法是否是事务方法,通过方法名在nameMap获得事务处理属性值,如果没有找到则通过PatternMatchUtils 进行命名模式上的匹配,如果匹配上会触发事务拦截器的拦截


事务处理拦截器的实现


事务处理的实现

具体事务处理器的实现

DataSourceTransactionManager

HibernateTransactionManager


你可能感兴趣的:(spring 技术内幕阅读笔记 - spring 事务处理)