java动态代理实例 约定不等于承诺〃 2022-09-29 12:55 78阅读 0赞 引用:[http://www.blogjava.net/thisliy/archive/2009/10/24/299621.html][http_www.blogjava.net_thisliy_archive_2009_10_24_299621.html] 1.真实对象接口 1 public interface IAnimal \{ 2 void info(); 3 \} 2.真实类 1 public class Cat implements IAnimal\{ 2 3 public void info() \{ 4 System.out.println( " This is a cat! " ); 5 \} 6 7 \} 3.调用处理器 1 import java.lang.reflect.InvocationHandler; 2 import java.lang.reflect.Method; 3 4 public class TraceHandler implements InvocationHandler\{ 5 6 private Object target; // 以真实角色作为代理角色的属性 7 8 // 构造器 9 public TraceHandler(Object target) \{ 10 this .target = target; 11 \} 12 13 /\* 14 \* 通过反射机制动态执行真实角色的每一个方法 15 \*/ 16 public Object invoke(Object proxy, Method method, Object\[\] args) 17 throws Throwable \{ 18 try \{ 19 System.out.println( " 被拦截的方法: " \+ method.getName()); 20 System.out.println( " 预处理![dot.gif][]![dot.gif][]. " ); 21 22 return method.invoke(target, args); // 调用真是对象的method方法 23 24 \} catch (Exception e) \{ 25 return null ; 26 \} finally \{ 27 System.out.println( " 善后处理![dot.gif][]![dot.gif][]. " ); 28 \} 29 \} 30 \} 4.客户端 1 import java.lang.reflect.InvocationHandler; 2 import java.lang.reflect.Proxy; 3 4 public class ProxyTest \{ 5 public static void main(String\[\] args) \{ 6 7 // 真实对象(即被代理对象) 8 final IAnimal animal = new Cat(); 9 10 // 为真实对象制定一个调用处理器 11 InvocationHandler handler = new TraceHandler(animal); 12 13 // 获得真实对象(animal)的一个代理类 ★★★★★ 14 Object proxyObj = Proxy.newProxyInstance( 15 animal.getClass().getClassLoader(), // 真实对象的类加载器 16 animal.getClass().getInterfaces(), // 真实对象实现的所有接口 17 handler // 真实对象的处理器 18 ); 19 20 if (proxyObj instanceof IAnimal) \{ 21 System.out.println( " the proxyObj is an animal! " ); 22 23 IAnimal animalProxy = (IAnimal)proxyObj; // proxyObj与animal都实现了IAnimal接口 24 25 animalProxy.info(); // 像普通animal对象一样使用(通过handler的invoke方法执行) 26 \} else \{ 27 System.out.println( " the proxyObj isn't an animal! " ); 28 \} 29 \} 30 \} 结果: the proxyObj is an animal! 被拦截的方法:info 预处理. This is a cat! 善后处理. [http_www.blogjava.net_thisliy_archive_2009_10_24_299621.html]: http://www.blogjava.net/thisliy/archive/2009/10/24/299621.html [dot.gif]: /images/20220708/456ac020e90b48af9bc28c42269961e6.png
相关 Java动态代理原理与应用实例 Java动态代理是Java语言特性的一种体现,它能够不修改原有代码的情况下,增加新的功能。其原理主要基于Java的反射机制和代理模式。 具体步骤如下: 1. 通过反射创建目 冷不防/ 2024年09月16日 00:27/ 0 赞/ 13 阅读
相关 Java动态代理实例 创建需要被代理的接口并实现 package com.example.javase; / @Description: Proxy 代理 曾经终败给现在/ 2023年07月04日 12:34/ 0 赞/ 31 阅读
相关 Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理 前言 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 代理 很多人至今都是看到 代理就 刺骨的言语ヽ痛彻心扉/ 2022年12月10日 15:53/ 0 赞/ 123 阅读
相关 java动态代理实例 引用:[http://www.blogjava.net/thisliy/archive/2009/10/24/299621.html][http_www.blogjava.ne 约定不等于承诺〃/ 2022年09月29日 12:55/ 0 赞/ 79 阅读
相关 java动态代理简单实例 java动态代理简单实例 package hello; import java.lang.reflect.InvocationHandle 系统管理员/ 2022年08月07日 12:36/ 0 赞/ 111 阅读
相关 Java 动态代理的两种方式实例 package top.yuyufeng.test.dynamicProxy; / created by yuyufeng on 2017 矫情吗;*/ 2022年06月10日 12:28/ 0 赞/ 162 阅读
相关 Java 动态代理-Jdk动态代理 > java 在java.lang.reflect 包下提供了一个Proxy 和 InvocationHandler 接口来支持生产Jdk 动态代理类(不常用)或动态代理对象. ╰半橙微兮°/ 2022年04月23日 06:28/ 0 赞/ 336 阅读
相关 java动态代理讲解(实例讲解) 动态代理 功能不更改原有业务功能的情况下,记录方法执行日志 实现方法 1.动态代理 jdk动态代理:jdk动态代理是基于java反射机制来实现的,主 港控/mmm°/ 2021年10月01日 11:22/ 0 赞/ 437 阅读
相关 代理模式:静态代理与动态代理(Java实例) 代理模式的角色分析: 抽象角色:一般会使用接口或者抽象类来解决 真实角色:被代理的角色 代理角色:代理真实角色,一般都在代理真实角色后,会做一些附属操作 客户:访问代理 悠悠/ 2021年09月09日 05:36/ 0 赞/ 377 阅读
还没有评论,来说两句吧...