创建一个代理类的核心方法:
package java.lang.reflect; Proxy类 public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException采用反射进行方法调用:
Object result = method.invoke(target, args);通过方法参数可以看出,如果需要创建一个代理类,必须要有一个目标类,目标类必须实现接口,自定义一个实现InvocationHandler 接口的类。
编写一个代理:
package proxy.base; import proxy.aop.HelloServeImpl; import proxy.aop.HelloService; import java.lang.reflect.Proxy; public class DefMyProxy { public static void main(String[] args) { HelloService helloService = new HelloServeImpl(); Object obj = Proxy.newProxyInstance(helloService.getClass().getClassLoader(), helloService.getClass().getInterfaces(),new DefInvocationHd(helloService)); HelloService hsp = (HelloService)obj; hsp.sayHello("简单代理"); } }运行结果:
Do something before 简单代理 Do something after