首先分享之前的所有文章 , 欢迎点赞收藏转发三连下次一定 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164…
Github : 👉 github.com/black-ant
一 .前言
上一篇聊过了 AOP 的初始化 , 了解了 AOP 是如何通过 PostProcess 完成 AOP 代理类的创建 ,
二 . AOP 创建起点
AOP 创建的
1 | JAVA复制代码// 在 AbstractAutoProxyCreator # wrapIfNecessary 中 , 发起了 createProxy 流程用于创建代理类 |
2.1 AbstractAutoProxyCreator 创建 Proxy 代理类
1 | java复制代码C- AbstractAutoProxyCreator |
[PIC] : specificInterceptors 对象内容
[Pro] AutoProxyUtils 的作用
1 | java复制代码C- AutoProxyUtils : 自动代理的工具类 |
[Pro] ProxyFactory 的作用
1 | java复制代码 |
[Pro] Advisor 作用
1 | java复制代码保存AOP通知(在连接点上要采取的动作)的基本接口和决定通知(如切入点)适用性的过滤器 , Advisor接口允许支持不同类型的通知,比如 Before Advice 和 After Advice |
2.2 buildAdvisors 创建通知对象
1 | java复制代码C- AbstractAutoProxyCreator |
三 . Aop 代理类的创建流程
上一节通过 CreateProxy 发起了代理的创建 , 此节来说一下 ProxyFactory 的创建流程
Step 1 : 获取代理类主流程 => ProxyFactory
1 | java复制代码// 类结构 =================== |
Step 2 : AOP 代理工厂的选择
1 | java复制代码// Aop 基于 Proxy 代理 , 主要接口为 AopProxy , 而 AopProxy 的创建接口类为 AopProxyFactory , |
Step 3-1 : CglibAopProxy 创建代理类
1 | java复制代码 |
Step 3-2 : JdkDynamicAopProxy
1 | java复制代码// JdkDynamicAopProxy 构建代理类 |
AopProxy 代理体系
1 | java复制代码Spring 中的代理类通常有 2个类 : CglibAopProxy / JdkDynamicAopProxy |
四 . 要点深入
4.1 ORIGINAL_TARGET_CLASS_ATTRIBUTE 属性的使用
1 | java复制代码// Step 1 : AbstractApplicationContext # refresh |
4.2 AOP Cglib 配置流程
通常基础的AOP 代理是通过
1 | java复制代码org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$AspectJAutoProxyingConfiguration$CglibAutoProxyConfiguration |
补充一 : EnableAspectJAutoProxy
1 | java复制代码public @interface EnableAspectJAutoProxy { |
补充二 : AopAutoConfiguration 自动配置类
1 | java复制代码@Configuration(proxyBeanMethods = false) |
补充三 : org.springframework.aop.config.internalAutoProxyCreator 的作用
1 | java复制代码C- AopConfigUtils # String AUTO_PROXY_CREATOR_BEAN_NAME = "org.springframework.aop.config.internalAutoProxyCreator" |
总结
讲道理 , 这篇文章其实没写好 , 很多地方现在都没弄清楚 , 精力有限无法在细致深入 , 总得来说算是一个半成品吧 , 后面时间充裕了 , 再来深入看一下
核心概念 :
- AbstractAutoProxyCreator # createProxy 发起代理类的创建
- AutoProxyUtils 为工具类 , 用于原类和代理的一些常见操作处理
- 通过 AopProxyFactory 创建代理类 , 有2种 : ObjenesisCglibAopProxy / JdkDynamicAopProxy
本文转载自: 掘金