# java_proxy **Repository Path**: enzoism/java_proxy ## Basic Information - **Project Name**: java_proxy - **Description**: java实现代理学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-19 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 代理学习 - 静态代理 - 动态代理-接口 - 动态代理-cglib -- -- # 1、静态代理 > 就是当前的代理类已经实现完了,已经是一个是完整的静态类了,不能再发生变更了 -- -- # 2、动态代理-JDK ```java // 针对【实现类】编写的Agent代理工具类 public class Agent implements InvocationHandler{ Object target; public Agent(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("我是代理,谈合作,拉投资,布置场地"); // 要调用的那个类[接口]的哪个方法,传入哪些值 Object invoke = method.invoke(target, args); System.out.println("我是代理,项目结算"); System.out.println(); return invoke; } public static Object getProxy(Object target){ Object instance = Proxy.newProxyInstance(MainClient.class.getClassLoader(), target.getClass().getInterfaces(), new Agent(target)); return instance; } } ``` ```java // 针对【接口】编写的Agent代理工具类 // 不给任何object做代理,我只给自己做代理 public class Agent2 implements InvocationHandler{ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("我是代理,谈合作,拉投资,布置场地"); // 不给任何object做代理,我只给自己做代理[所以下面这句话是注释的] // Object invoke = method.invoke(target, args); System.out.println("---执行"+method.getName()); System.out.println("我是代理,项目结算"); System.out.println(); return null; } public static T getProxy(Class clazz){ Agent2 agent = new Agent2(); T instance = (T)Proxy.newProxyInstance(agent.getClass().getClassLoader(), new Class[]{clazz}, agent); return instance; } } ```