JDK 动态代理应用

1.所有的动态代理,看源码可知都会首先生成代理类,CGLIB的代理类是目标类的子类,JDK的代理类是extend Proxy implement interfaces[] - 这个就是目标类(被代理类)实现的所有接口

2.生成的代理类是存放在内存中的,可以通过jvm参数指定输出到文件中,然后根据代理类生成代理对象

3.看一下动态代理的代码,从代码看出其实生成的代理对象userServiceInterface和被代理类是没有任何关系的,只是在invoke方法里面需要调用被代理类(对象)的方法。

这也是我们的初衷 - 去增强被代理类的方法。

class UserService implements UserServiceInterface{};

UserService userService = new UserService();

UserServiceInterface userServiceInterface  = (UserServiceInterface) Proxy.newProxyInstance(JDKTester.class.getClassLoader(), new Class[]{UserServiceInterface.class}, new InvocationHandler() {

@Override

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

System.out.println("proxy before method");

method.invoke(userService, args);

return null;

}

});

userServiceInterface.order();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容