AOP Alliance:为AOP实现定义了一组标准接口
MethodInterceptor是AOP Alliance标准接口之一
简单实现环绕通知效果
package com.apress.prospring5.ch5;
public class Agent {
public void speak() {
System.out.print("Bond");
}
}
package com.apress.prospring5.ch5;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class AgentDecorator implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
System.out.print("James ");
Object retVal = invocation.proceed();
System.out.println("!");
return retVal;
}
}
package com.apress.prospring5.ch5;
import org.springframework.aop.framework.ProxyFactory;
public class AgentAOPDemo {
public static void main(String... args) {
Agent target = new Agent();
ProxyFactory pf = new ProxyFactory();
pf.addAdvice(new AgentDecorator());
pf.setTarget(target);
Agent proxy = (Agent) pf.getProxy();
target.speak();
System.out.println("");
proxy.speak();
}
}
执行结果
Bond
James Bond!