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