死磕Spring之AOP篇 - Spring AOP两种代理对象的拦截处理
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读。
Spring 版本:5.1.14.RELEASE
在开始阅读 Spring AOP 源码之前,需要对 Spring IoC 有一定的了解,可查看我的 《死磕Spring之IoC篇 - 文章导读》 这一系列文章
了解 AOP 相关术语,可先查看 《Spring AOP 常见面试题) 》 这篇文章
该系列其他文章请查看:《死磕 Spring 之 AOP 篇 - 文章导读》
在前面几篇文章依次介绍了 Spring AOP 自动代理的整个过程,入口在 AbstractAutoProxyCreator 这个类中,它实现了几种 BeanPostProcessor接口,结合 Spring IoC,在 Bean 的加载过程中支持创建代理对象,通常在 Bean 的初始化后,也就是 Bean 处于一个“成熟态”的时候进行 AOP 代理。整个的处理过程比较复杂,需要找到当前 Spring 上下文所有的 Advisor,也就是 Advice 的容器接口,通常都是 PointcutAdvisor,还包含了一个 Pointcut 切点。接着就是从这些 Advisor 中筛选出能够应用于这个 Bean 的 Advisor 出来,经过一些处理过程,最后通过 JdkDynamicAopProxy(JDK 动态代理)或者 ObjenesisCglibAopProxy(CGLIB 动态代理)创建一个代理对象。
本文将会分析 Spring AOP 创建的两种代理对象的拦截处理是如何进行的。开始之前,我们得知道JDK 动态代理创建的代理对象,拦截处理在 InvocationHandler 实现类中;CGLIB 动态代理创建的代理对象,拦截处理在传入的 Callback 回调中,对于这两种代理对象不是很熟悉的小伙伴可查看我前面的文章
最新文章
- hibernate-cache
- Android 判断SIM卡属于哪个移动运营商
- Oracle日期格式转换
- mysql导入sql文件过大或连接超时的解决办法
- Jsp万能密码漏洞修复例子
- PAT-乙级-1048. 数字加密(20)
- DC-DC芯片 同步和異步方式有什么區別
- Pet(hdu 4707 BFS)
- [Android阅读代码]android-async-http源码学习一
- Bullet_Point_Py
- (七十八)使用第三方框架INTULocationManager实现定位
- 用java从0生成一个简单的excel
- Ubuntu 16.04下添加新用户
- Redis的五大数据类型
- 查找单链表的倒数第k个值
- 第二阶段Sprint冲刺会议8
- python learning Network Programming.py
- HDU 6187 Destroy Walls
- 网络基础知识-bps、Bps、pps的区别
- 3D打印产业链全景图
热门文章
- 自己写的一个抢票加速的Python小程序源码分享-----纯属娱乐
- Jump Server在docker中安装部署
- springboot的4种属性注入
- C++的指针,引用,指向指针的引用和Java中的引用
- Linux速通01 操作系统安装及简介
- 医学图像配准 | Voxelmorph 微分同胚 | MICCAI2019
- Vulkan移植GpuImage(一)高斯模糊与自适应阈值
- python stats画正态分布、指数分布、对数正态分布的QQ图
- Gevent高并发网络库精解
- filecoin今日价格,filecoin币价估值,filecoin币会涨到多少钱