生成动态代理的通用java代码。这段代码是一个类似Spring的可配置AOP框架中的一个类,其中Advice1是接口,包含before和after两个方法。
package pack.aop;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyFactoryBean {
private Object target;
private Advice1 advice;
public Object getTarget() {
return target;
}
public void setTarget(Object target) {
this.target = target;
}
public Advice1 getAdvice() {
return advice;
}
public void setAdvice(Advice1 advice) {
this.advice = advice;
}
public Object getProxy() {
Object proxy = Proxy.newProxyInstance(
target.getClass().getClassLoader(), target.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("proxy class: " + proxy.getClass().getName());
advice.before(method);
Object retval = method.invoke(target, args);
advice.after(method);
return retval;
}
});
return proxy;
}
}
AOP框架代码以后再发布。