前置增强的实现

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方法运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值