Spring Aop原理分析(一) - 建立AopProxy代理对象

本文深入探讨了Spring Aop的基础,包括AopProxy的生成方式,如通过JDK和CGLIB。在AopProxy的生成过程中,详细解释了AbstractAutoProxyCreator的角色,以及在Bean初始化时如何创建JdkDynamicAopProxy和CglibAopProxy。JdkDynamicAopProxy利用InvocationHandler接口,而CglibAopProxy则借助Enhancer和DynamicAdvisedInterceptor实现Aop功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Aop基础知识准备

在开始Aop原理分析之前,必须先两个知识点:

  1. Aop基础:http://sishuok.com/forum/blogPost/list/2466.html
  2. 代理模式:http://www.cnblogs.com/machine/archive/2013/02/21/2921345.html,重点理解Java动态代理

有了这两个知识点就可以开始我们的Spring Aop源码之旅了,其实Spring Aop是对Java动态代理的增强,添加了通知链、拦截器等功能

AopProxy的生成方式

在Spring的Aop模块中,一个主要的部分是代理对象的生成,即AopProxy的生成,AopProxy类似于Java动态代理的Proxy,有两种方式生成AopProxy,下面看两张类图:

  • 第一种方式,最顶层是ProxyConfig是一个数据,这个数据基类为ProxyFactoryBean这样的子类提供了配置属性;在另一个基类AdvisedSupport的实现中,封装了Aop对通知和通知器的相关操作,这些操作对于不同的Aop的代理对象的生成都是一样的,但对于具体的Aop代理对象的创建,AdvisedSupport把它交给它的子类们去完成;对于ProxyCreatorSupport,可以将它看成是其子类创建Aop代理对象的一个辅助类;具体的Aop代理对象的生成,根据不同的需要,分别由ProxyFactoryBean、ProxyFactory、AspectJProxyFactory来完成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值