jdk动态代理

JDK动态代理的简单实现

我是研究僧i 提交于 2020-04-07 02:06:17
1. 先理一下动态代理实现的思路: 实现功能: 自己定义一个类 Proxy, 通过Proxy的静态方法 newProxyInstance(Class<T> intface,InvocationHandler h)返回代理对象, intface: 被代理类的接口对象, h: InvocationHandler的实例对象 1). 声明一段动态代理类的源码( 动态产生代理类 ) 2). 编译动态代理类的源码( JDK Compiler API ), 产生代理类 3). 通过 ClassLoader 加载这个代理类, 创建一个代理类的实例对象 4). return 返回这个代理对象 2. 代码实现: 为什么代理类的类名为 $Proxy0? 这是因为 Java中动态代理, 生成的代理类的类名就是 $Proxy0, 依葫芦画瓢而已, 可以用一个动态代理对象 proxy, 来验证: System.out.println(proxy.getClass().getName()); //输出com.sun.proxy.$Proxy0 public class Proxy { /** * @param intface * 被代理类的接口的类对象 * @param h * InvocationHandler的实例对象 * @return proxy 生成的动态代理对象 * @throws

java jdk与cglib动态代理模式的认识和实现

被刻印的时光 ゝ 提交于 2019-11-30 15:59:31
1.使用java jdk Proxy实现动态代理,该原理是反射机制。 建立一个普通的接口 package com.tester.cls.design.mode; public interface IUser { public String getName(); public void setName(String name); public void setUser(int id,String name); public int getId(); public void setId(int id); } 构建一个实现类(简单的javaBean) package com.tester.cls.design.mode; public class User implements IUser{ private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void setUser(int id,String name) {