概述
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的实现类。相对于