Spring事务管理原理

Spring事务管理的实现可以分为两个部分来讲:

  1. 借力AOP:如何通过AOP使事务管理生效;
  2. 事务管理:事务管理的本质是什么;

Leer más

Spring事务基础设施介绍

Spring在事务实现过程中抽象出来以下几个数据模型,用于支撑整个事务架构。

一.核心组件

1.TransactionDefinition

TransactionDefinition负责定义事务相关属性,包括隔离级别,传播行为等,是事务管理元数据。我们通过@Transaction声明事务时,最终都转换成TransactionDefinition来表示,类似与BeanDefinition的味道。

Leer más

Spring-AOP整合Aspect介绍

我们先看看在生成代理时,是如何找到AspectJ形式声明的Advisor的。

提示:
    AnnotationAwareAspectJAutoProxyCreator.findCandidateAdvisors()
    方法查找过程中即查找了Spring AOP原来的Advisor,也查找了AspectJ声明的

Leer más

Spring-AOP基础设施介绍-AspectJ配套设施

我们仅列出Spring-AOP基础设施介绍-核心中不同的部分。

提示:
    AspectJ在使用Joinpoint时,没有变化,所以略去了;
    ---共享原有基础设施

Leer más

动态代理对象运行分析-Cglib版

Cglib版在代理对象生成时,由方法和AOP上下文来决定具体使用哪个Callback,在运行时直接通过Callback进行方法调用。下面我们介绍两种类型的Callback:DynamicAdvisedInterceptor和FixedChainStaticTargetInterceptor,先从DynamicAdvisedInterceptor开始。

Leer más

动态代理对象运行分析-Jdk版

下图是代理对象调用示意图(引自Spring官方文档):

查看大图

代理对象调用示意图

Leer más

代理运行中如何查找方法适用的Advisor

查找方法适用的Advisor时序图如下:

查看大图

Leer más

代理生成中如何查找Bean适用的Advisor

提示:
    在确认Advisor是否适用Bean时,在Class层和Method层确认方向上是相反的:
        1.Class层:当前Class是否在不匹配的集合内,是的话返回false;
        2.Method层:当前Class层中只有有一个方法适用,就返回true;

Leer más

Spring-AOP基础设施介绍-核心

我们看下Spring给我们提供了哪些基础组件(AspectJ相关Aop支持单独一篇介绍),大家看之前,要明白先有规范,再有实现。

提示:
    生成代理对象生成用到的AOP组件,见第一篇<<Spring-IoC基础设施介绍>>中有介绍。

一.核心组件

1.Joinpoint

Joinpoint:织入操作的系统执行点。在Spring AOP落地过程中,用于协调横切逻辑(Advice)执行和目标方法执行。

Leer más

验收生成的Bean实例

大家有没有发现不管是缓存中获取的,还是不同作用域Bean实例生成,都调用了AbstractBeanFactory.getObjectForBeanInstance()方法,足见该方法的重要性。以下是验收的逻辑:

查看大图

Leer más