当前位置: 代码迷 >> 综合 >> Java面试必问题:Spring AOP 原理源码深度剖析
  详细解决方案

Java面试必问题:Spring AOP 原理源码深度剖析

热度:60   发布时间:2024-01-29 06:56:12.0

概述
AOP(Aspect-Oriented Programming) 面向切面编程。Spring Aop 在 Spring框架中的地位举足轻重,主要用于实现事务、缓存、安全等功能。本篇主要是对源码进行深度分析。

主要介绍以下三个方面:

Spring AOP 多种代理机制相关核心类介绍。
Spring Boot 中AOP注解方式源码分析。
Spring Boot 1.x 版本和 2.x版本 AOP 默认配置的变动。
Spring AOP 多种代理机制相关核心类介绍
先介绍一些Spring Aop中一些核心类,大致分为三类:

advisorCreator,继承 spring ioc的扩展接口 beanPostProcessor,主要用来扫描获取 advisor。
advisor:顾问的意思,封装了spring aop中的切点和通知。
advice:通知,也就是aop中增强的方法。
对以上三类核心类对应的 UML 分别来看。

advisorCreator:

AbstractAutoProxyCreator:Spring 为Spring AOP 模块暴露的可扩展抽象类,也是 AOP 中最核心的抽象类。Nepxion Matrix 框架便是基于此类对AOP进行扩展和增强。

BeanNameAutoProxyCreator:根据指定名称创建代理对象(阿里大名鼎鼎的连接池框架druid也基于此类做了扩展)。通过设置 advisor,可以对指定的 beanName 进行代理。支持模糊匹配。

AbstractAdvisorAutoProxyCreator:功能比较强大,默认扫描所有Advisor的实现类。相对于根据Bean名称匹配,该类更加灵活。动态的匹配每一个类,判断是否可以被代理,并寻找合适的增强类,以及生成代理类。

DefaultAdvisorAutoProxyCreator:AbstractAdvisorAutoProxyCreator的默认实现类。可以单独使用,在框架中使用AOP,尽量不要手动创建此对象。

AspectJAware