004 ProxyFactoryBean

一 . 概述

  在前一节之中,我们使用ProxyFactory创建了代理对象,后面也提到,spring支持配置式的方式创建代理对象.

  配置的关键就是ProxyFactoryBean.


二 .ProxyFactoryBean的结构  

public class ProxyFactoryBean extends ProxyCreatorSupport
        implements FactoryBean<Object>, BeanClassLoaderAware, BeanFactoryAware {

我们看到这个类实现了FactoryBean接口,那么我们就知道这个实现类是专门用来创建对象的.

我们将上一节的内容进行配置.

<!--配置目标对象  -->
    <bean id="realSubject" class="com.trek.factory.RealSubject"></bean>
    <!-- 配置通知对象 -->
    <bean id="advice" class="com.trek.factory.ExecBeforeAdvice"></bean>
    <!-- 配置代理对象 -->
    <bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">
        <!-- 代理对象 -->
        <property name="target" ref="realSubject"></property>
        <!-- 声明的接口 -->
        <property name="proxyInterfaces" value="com.trek.factory.Subject"></property>
        <!-- 增强 -->
        <property name="interceptorNames">
            <list>
                <value>advice</value>
            </list>
        </property>
    </bean>

测试代码:  

        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("com/trek/factory/spring.xml");
        Subject proxy = (Subject) context.getBean("proxy");
        proxy.exec();

通过上面的配置,我们省去了编程的方式创建代理对象.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9097354.html
004