Spring AOP获取Proxy对象的代码流程

来源:互联网 发布:域名服务器申请 编辑:程序博客网 时间:2024/05/01 12:42

前面一篇给出了一个模拟springAOP的小例子,大家可以看到大概流程,今天我们从spring源码中分析获取Proxy对象的代码流程

 

当我们有了advice和pointcut之后,需要一个通知器来通知在哪应用切点以及一些处理动作advice。

我们会通过ProxyFactoryBean来配置我们的代理对象和方面行为,获得代理对象即靠下面的代码

 

生成单例代理对象getSingletonInstance

 

我们接着看这个方法createAopProxy

然后进入AopProxy org.springframework.aop.framework.AopProxyFactory.createAopProxy(AdvisedSupport config)

Create an AopProxy for the given AOP configuration.

 

 

JDK类型的AopProxy的方法如下

 

 

下面为cglib类型的AopProxy方法

 

      这样用Proxy包装target之后,通过ProxyFactoryBean得到对其方法的调用就被Proxy拦截了, ProxyFactoryBean的getObject()方法得到的
实际上是一个Proxy了,我们的target对象已经被封装了。对 ProxyFactoryBean这个工厂bean而言,其生产出来的对象是封装了目标对
象的代理对象。

 

参考资料:《Spring技术内幕 - 深入解析Spring架构与设计原理》 ,spring源码。

原创粉丝点击