方法拦截器(MethodInterceptor)使用

方法拦截器(MethodInterceptor)使用

 

package cuigh.spring.aop.step01;

/*

 * 功能:目标类

 * */

public class MessageWriter {

public void writeMessage(String name){

System.out.print(" World ");

}

public void writeMessage2(){

System.out.print("World 2 ");

}

}

package cuigh.spring.aop.step01;

import org.aopalliance.intercept.MethodInterceptor;

import org.aopalliance.intercept.MethodInvocation;

/*

 * 功能:代理类,在目标方法之前(System.out.print("Hello ");)、

 * 之后增加逻辑(System.out.println(" !");)。

 * MethodInterceptor  方法拦截器

 * 

 * */

public class MessageDecorator implements MethodInterceptor {

@Override

public Object invoke(MethodInvocation arg0) throws Throwable {

System.out.println("被拦截的方法名称="+arg0.getMethod().getName());

System.out.print("Hello ");

Object verVal = arg0.proceed();

System.out.println(" !");

return verVal ;

}

}

package cuigh.spring.aop.step01;

import org.springframework.aop.framework.ProxyFactory;

public class HelloWorldAOPExample {

/*

 * 功能:演示

 * */

public static void main(String[] args) {

//目标类

MessageWriter target = new MessageWriter();

//通知类

MessageDecorator advice = new MessageDecorator();

//获得代理工厂

ProxyFactory pf = new ProxyFactory();

//设置目标类

pf.setTarget(target);

//设置通知类,Weaving

pf.addAdvice(advice);

//获得目标类的代理类

MessageWriter proxy = (MessageWriter)pf.getProxy();

target.writeMessage("zhang");

System.out.println("\n-------------");

proxy.writeMessage("wang");

System.out.println("\n-------------");

proxy.writeMessage2();

}

}

输出结果:

 World 

-------------

被拦截的方法名称=writeMessage

Hello  World  !

-------------

被拦截的方法名称=writeMessage2

Hello World 2  !

发布了36 篇原创文章 · 获赞 2 · 访问量 2万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章