spring ProxyFactoryBean简单使用

使用Spring的ProxyFactoryBean来拦截方法
先编写一个类这个类要implements MethodBeforeAdvice在这里我定义了一个MinstrelAdvice类implements MethodBeforeAdvice
MethodBeforeAdvice位置是org.springframework.aop.MethodBeforeAdvice
public class MinstrelAdvice implements MethodBeforeAdvice {

public void before(Method method, Object[] obj, Object target)
throws Throwable {
Knight knight = (Knight) target;
Logger song = Logger.getLogger(target.getClass());
System.out.println("MinstrelAdvice running.........");
song.debug("Brave " + knight.getName() + " did " + method.getName());
}

}

然后配置applicationContext.xml文件
<bean id="quest" class="com.springinaction.chapter01.knight.HolyGrailQuest"></bean>

<bean id="knightTarget" class="com.springinaction.chapter01.knight.KnightOfTheRoundTable">
<constructor-arg>
<value>Bedivere</value>
</constructor-arg>
<property name="quest">
<ref bean="quest"/>
</property>
</bean>

<bean id="new" class="com.springinaction.chapter01.knight.New"></bean>

<bean id="minstrel" class="com.springinaction.chapter01.knight.MinstrelAdvice">
</bean>

<bean id="knight" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<list><!-- 拦截Knight的方法 是一个接口类 -->
<value>com.springinaction.chapter01.knight.Knight</value>
</list>
</property>

<property name="interceptorNames">
<list>
<value>minstrel</value><!-- 先让minstrel处理请求 -->
</list>
</property>

<property name="target">
<ref bean="knightTarget"/> <!-- 再让knightTarget处理 -->
</property>
</bean>

使用ProxyFactoryBean来拦截Knight子类中的方法,定义interceptorNames属性让minstrel先处理请求,再定义target属性让knightTarget处理,这样我们就可以在使用Knight接口的子类时做一些提前的外理了,比如获得日志类Logger和不拦截的状态下所调用的方法.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值