一 . 概述
在前一节之中,我们使用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();
通过上面的配置,我们省去了编程的方式创建代理对象.
原文:https://www.cnblogs.com/trekxu/p/9097354.html