JDK的动态代理主要涉及java.lang.reflect包中的两个类:Proxy和InvocationHandler。其中,InvocationHandler是一个接口,可以通过实现改接口定义横切逻辑,并通过反射机制调用目标类的代码,动态的将横切逻辑和业务逻辑编织在一起。而Proxy利用InvocationHandler动态创建一个符合某一接口的实例,生成目标类的代理对象。
Object target = new Object(); //希望被代理的目标业务类
XXXHandler handler = new XXXHandler(); //一个实现了InvocationHandler的类,将目标业务类和切面代码编织到一起
Proxy proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), handler);
proxy.useMethod(Object params); 调用代理对象方法