JDK动态代理创建及使用

1、创建的代理类首先要实现 InvocationHandler(java.lang.reflect.InvocationHandler)、然后处理实现其中invoke()方法;                 2、代理类中提供一个返回类型是Object、创建代理实例的方法(传入目标类 Object userService)供client调用,该方法return Proxy.newProxyInstance(args1,args2,args3);                                                                                                                                          args1:设置代码使用的类加载器,一般采用和目标类相同的加载器(this.userService.getClass().getClassLoader());                                  args2:跟目标类相同的接口(this.userService.getClass().getInterFaces());                                                                                           args3:设置回调对象,当代理对象的方法被调用时会调用该参数指定对象的方法(this);即 invoke方法                                        invoke(Object proxy, Method method, Object[] args)分别对应代理类对象,可以访问目标对象的操作,可以传递到目标对象的参数;            3、通过invoke 中的method访问目标对象,method.invoke(Object,args); 分别对应目标对象,传给目标对象的参数                                   4、client端创建目标对象,代理实例,调用代理类中的创建实例方法;                                                                                                          RealClass   rc = new RealClass(); //创建真实对象                                                                                                                         JdkProxy jdkProxy = new JdkProxy();//创建代理类                                                                                                                   RealClass  proxyClass = RealClass)jdkProxy.createNewProxyInstatce(userService); //把真实类传递给代理实例                                         proxyClass.save("");//调用目标类中的save方法    

5、可以在代理中添加比如安全检查等方法,或业务逻辑                                                                 

你可能感兴趣的:(JDK动态代理创建及使用)