前置增强的实现

来源:互联网 发布:我的世界pe我是僵尸js 编辑:程序博客网 时间:2024/05/21 14:08
1.创建一个接口类
public interface Waiter {
 void greetTo(String name);
 void serveTo(String name);
}
2.创建接口实现类
public class NaiveWaiter implements Waiter {
 @Override
 public void greetTo(String name) {
  System.out.println("greet to "+name+"...");
 }
 @Override
 public void serveTo(String name) {
  System.out.println("serving "+name+"...");
 }
}
4.实现前置增强接口
public class GreetingBeforAdvice implements MethodBeforeAdvice {
 /**
  * method 为目标类的方法
  *
  * args 为目标类的入参
  *
  * obj 为目标类的实例
  */
 @Override
 public void before(Method method, Object[] args, Object target)
   throws Throwable {
  String clientName = (String) args[0];
  System.out.println("How are you! Mr " + clientName + ".");
  // System.out.println(target.getClass().getName());
 }
}
5.advisor 上场
public class TestBeforAdvice {
 
 public static void main(String[] args) {
  Waiter target=new NaiveWaiter();
 
  BeforeAdvice beforeAdvice=new GreetingBeforAdvice();
 
  //spring 提供的代理工厂
  ProxyFactory pf=new ProxyFactory();
  //设置代理目标
  pf.setTarget(target);
  //为代理目标添加增强
  pf.addAdvice(beforeAdvice);
  //生成代理实例
  Waiter waiter=(Waiter) pf.getProxy();
  waiter.greetTo("John");
  waiter.serveTo("Tom");
 }
}
main方法运行结果:

0 0
原创粉丝点击