java动态代理
2018-06-21 06:54:30来源:未知 阅读 ()
一接口和实现类
interface Subject { public void hello(); } class RealSubject implements Subject { @Override public void hello() { System.out.println("hello"); } }
二、创建代理实现类
class DynamicProxy implements InvocationHandler { // 代理的真实对象 private Object target; public DynamicProxy(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("beffor"); // 当代理对象调用真实对象的方法时,其会自动执行代理对象关联的handler对象的invoke方法来进行调用, // 无论何时调用代理对象的方法,调用处理器的 invoke 方法都会被调用, 并向其传递Method 对象和原始的调用参数。 调用处理器必须给出处理调用的方式 method.invoke(target, args); System.out.println("affter"); return null; } }
三、测试代码
class ProxyTest { public static void main(String[] args) { Subject realSubject = new RealSubject(); InvocationHandler invocationHandler = new DynamicProxy(realSubject); /* * 通过Proxy的newProxyInstance方法来创建我们的代理对象,我们来看看其三个参数 * 第一个参数 类加载器 handler.getClass().getClassLoader() ,我们这里使用realSubject这个类的ClassLoader对象来加载我们的代理对象 * 第二个参数 一个class对象数组,每个元素都要实现的接口。我们这里为代理对象提供的接口是真实对象所实行的接口,表示我要代理的是该真实对象,这样我就能调用这组接口中的方法了 * 第三个参数 一个调用处理器 invocationHandler, 我们这里将这个代理对象关联到了上方的 InvocationHandler 这个对象上 * */ Subject proxy = (Subject) Proxy.newProxyInstance(realSubject.getClass().getClassLoader(), realSubject.getClass().getInterfaces(), invocationHandler); proxy.hello(); //realSubject.hello(); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:MyBatis-1.0
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- 代理项 Surrogate 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash