Spring源码解析(九)-建立AopProxy代理对象

2017-11-30  本文已影响0人  Jerry_dong

在Spring的AOP模块中,一个主要部分是代理对象的生成。而对于Spring应用,可以看到是通过配置和调用Spring的ProxyFactoryBean来完成的。在ProxyFactoryBean中,又封装了主要代理对象的生成过程。而代理对象的生成,使用了JDK的Proxy和CGLIB两种方式。

1.AopProxy类结构体系

AopProxy结构体系.png

2.ProxyFactory类结构体系

ProxyConfig结构体系.png

3.ProxyFactoryBean

因为ProxxyFactoryBean是在Spring IOC环境中创建AOP应用的底层方法,也是最灵活的方法。所以我们以ProxyFactoryBean为入口,逐层深入,理解AOP实现
1.配置ProxyFactoryBean

    <!--通知器,通知器的实现定义了需要对目标对象进行的增强的切面行为 -->
    <bean id=”testAdvisor” class=”com.test.TestAdvisor” />
    <!--AOP代理,封装AOP功能的主要类 -->
    <bean id=”testAOP” class=”org.springframework.aop.ProxyFactoryBean”>
        <!--AOP代理接口 -->
        <property name=”proxyInterfaces”>
            <value>com.test.TestProxyInterface</value>
        </property>
        <!--需要使用AOP切面增强的对象 -->
        <property name=”target”>
            <bean class=”com.test.TestTarget” />
        </property>
        <!--interceptorNames属性的值往往设置为需要定义的通知器 -->
        <property name=”interceptorNames”>
            <list>
                <value>testAdvisor</value>
            </list>
        </property>
    </bean>

2.AopProxy的生成时序图
从FactoryBean中获取对象,是以getObject()方法作为入口完成的;ProxyFactoryBean实现中的getObject方法,是FactoryBean需要实现的接口

AopProxy生成时序图.png

下面一节我们将详细解析时序图中生成AopProxy的方法

上一篇下一篇

猜你喜欢

热点阅读