Aop基础知识准备
在开始Aop原理分析之前,必须先两个知识点:
- Aop基础:http://sishuok.com/forum/blogPost/list/2466.html
- 代理模式: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来完成