- 浏览: 131097 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
qindongliang1922:
不错!
linux sort 命令 -
eve:
这个还真没注意,8错
protected访问权限又理解了一下 -
imp860124:
学习了。
struts ActionForward跳转添加参数
定义接口类:
被代理对象(实现上面定义的接口)
静态代理实现
动态代理处理类
客户端分别通过静态和动态实现代理
输出结果:
proxy log
target add method
proxy log
target update method
proxy log
staticProxy
dynamic proxy log
调用的方法:add
无参方法
target add method
dynamic proxy log
调用的方法:update
无参方法
target update method
dynamic proxy log
调用的方法:get
传递的参数:
param0:dynaProxy
dynaProxy
public interface CommonInterface { public void add(); public void update(); public String get(String str); }
被代理对象(实现上面定义的接口)
public class Target implements CommonInterface { public void add(){ System.out.println("target add method"); System.out.println(""); } @Override public void update() { System.out.println("target update method"); System.out.println(""); } @Override public String get(String str) { return str; } }
静态代理实现
public class StaticProxy implements CommonInterface{ private CommonInterface target; public StaticProxy(CommonInterface target){ this.target = target; } @Override public void add() { log(); target.add(); } @Override public void update() { log(); target.update(); } @Override public String get(String str) { log(); return target.get(str); } public void log(){ System.out.println("proxy log"); } }
动态代理处理类
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class MyHandler implements InvocationHandler { private CommonInterface target; public MyHandler(CommonInterface target){ this.target = target; } /* * invoke方法是InvocationHandler接口中的方法,第一个参数是被代理对象, * 第二个参数是当前调用的方法,第三个参数是当前被调用方法的参数 */ @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { log(); System.out.println("调用的方法:"+method.getName()); if(args == null){ System.out.println("无参方法"); }else{ System.out.println("传递的参数:"); for(int i=0;i<args.length;i++){ System.out.println("param"+i+":"+args[i]); } } Object obj = method.invoke(target, args); return obj; } public void log(){ System.out.println("dynamic proxy log"); } }
客户端分别通过静态和动态实现代理
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; public class Client { public static void main(String[] args) { CommonInterface target = new Target(); //静态代理 CommonInterface staticProxy = new StaticProxy(target); staticProxy.add(); staticProxy.update(); System.out.println(staticProxy.get("staticProxy")); //动态代理 InvocationHandler handler = new MyHandler(target); /* * 创建代理类,代理类会实现目标对象的接口,因此,如果想调用目标对象的某个方法,可以直接调用代理类的相应接口方法, * 所以目标对象实现某个接口是必须的。当上溯造型代理类到接口,调用接口中的相应方法,代理类会调用目标对象的Handler的invoke方法, * 通过反射把调用的相应的方法和参数传递到Handler中,handler的invoke方法调用 */ CommonInterface dynaProxy = (CommonInterface) Proxy. newProxyInstance(target.getClass().getClassLoader(), //第一个参数目标对象的类加载器的class文件 target.getClass().getInterfaces(),//第二个参数目标对象实现的接口的class文件 handler);//第三参数实现InvocationHandler接口的目标对象的Handler dynaProxy.add(); dynaProxy.update(); System.out.println(dynaProxy.get("dynaProxy"));//打印返回结果 } }
输出结果:
proxy log
target add method
proxy log
target update method
proxy log
staticProxy
dynamic proxy log
调用的方法:add
无参方法
target add method
dynamic proxy log
调用的方法:update
无参方法
target update method
dynamic proxy log
调用的方法:get
传递的参数:
param0:dynaProxy
dynaProxy
发表评论
-
java 工程中静态常量类问题
2015-05-27 10:42 1010在搭建java工程时,一般都会建有一个常量类Constants ... -
java计算排列结果内容
2014-06-16 11:06 597递归方法 /** * 递归计算 * @param ... -
java 序列化
2014-03-18 17:41 898以有序的字节数组形式描述java对象, 包括对象的描述信息(类 ... -
HttpClient 登陆iteye
2014-02-21 16:10 1066static String cookie; static ... -
java 调用 oracle 存储过程
2014-02-08 14:45 606private static String url =&qu ... -
log4j 配置
2014-01-22 17:49 674log4j日志配置 1.log4j.rootLogger ... -
tomcat 使用log4j记录分割日志
2014-01-16 10:51 5581tomcat日志记录默认使用java.util.logging ... -
java 正则
2013-10-29 16:47 749\d 数字0-9 \D 非数字[^0-9] \s 空白字符[ ... -
javabean 嵌套属性赋值
2013-04-02 09:33 1656import java.beans.PropertyD ... -
eclipse 取消汉化
2013-03-06 11:36 1887方法一:在eclipse.ini文件中添加启动参数 -Duse ... -
java 进度条上传
2013-02-28 10:00 908上传ajax方式,可用juery.ajaxupload插件 ... -
java 调用 webservice
2013-01-07 11:14 2227只想调用远处webservice,不构建自己的,看了一些资料都 ... -
java nio SocketChannel 服务器端与多客户端 信息交互(聊天功能)
2013-01-05 15:24 5037服务器端: import java.io.IOExcept ... -
java nio buffer
2012-12-31 17:54 1095buffer是固定数量的数据的容器,可以被填充和读取。 一个 ... -
java Integer
2012-09-06 14:33 0java Integer比较 public stat ... -
Apache Commons DbUtils
2011-12-06 11:11 1541dbutils jar下载地址http://labs.renr ... -
solr服务器的搭建与简单使用
2011-08-17 11:30 0solr安装: 1.下载(v1.4.1) ht ... -
protected访问权限又理解了一下
2011-06-30 14:46 1665看java的克隆时遇到问题 不能直接调用Object类的clo ... -
lucence hello world
2011-04-27 12:24 1127/* * lucence version 3.0.3 ... -
局域网流量监控原理(java)
2011-04-25 11:11 2339使用jpcap开源java包。(http://netresea ...
相关推荐
Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理在很多场景下都非常有用,比如日志记录、性能监控、事务管理等。本示例将带你深入理解...
Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用真实目标对象的方法时添加额外的功能或行为。在这个实例中,我们将深入探讨Java动态代理的核心概念,...
Java动态代理是Java编程中一个重要的特性,它允许在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理主要应用于面向切面编程(AOP)和事件监听等场景,使得代码更加模块化,易于维护。以下是...
Java动态代理技术是Java编程中一个非常重要的特性,它允许我们在运行时动态创建具有特定行为的对象。这种技术常用于AOP(面向切面编程)和框架中,如Spring AOP,用于实现方法拦截、事务管理等功能。Java提供了两种...
本篇文章将深入探讨Java动态代理的概念、原理以及如何通过一个简单的"Hello, World!"示例来理解它。 动态代理,顾名思义,是在程序运行时动态地生成代理对象。与静态代理(编译时已知)相比,动态代理更加灵活,...
JDK 动态代理JDK 提供了 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口来支持动态代理。Proxy 类用于创建一个代理对象,而 InvocationHandler 接口则定义了代理对象的方法调用处理逻辑。...
Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,以便在调用方法时添加额外的功能或控制。动态代理在很多场景下非常有用,比如日志记录、性能监控、事务管理等。...
Java动态代理是Java编程中一个重要的特性,它允许我们在运行时创建代理对象,这些代理对象可以代表并增强原对象的功能。动态代理主要涉及到Java.lang.reflect包下的两个类:Proxy和InvocationHandler。本教程将通过...
Java动态代理机制是Java语言提供的一种强大的功能,它允许在运行时创建代理对象来实现特定接口,从而可以灵活地扩展或增强已有代码的功能。在Java中,动态代理主要通过两个类来实现:`java.lang.reflect.Proxy` 和 `...
### Java动态代理实现AOP详解 #### 一、引言 随着软件开发复杂度的提升,传统的面向对象编程(OOP)已经难以满足现代软件工程的需求。为了更好地管理跨切面的关注点,如日志记录、性能监控、安全控制等,面向切面...
java动态代理 public class HireProxy implements InvocationHandler { //被代理的真实角色 private Object obj; public HireProxy(Object obj) { super(); this.obj = obj; } //第二个参数method,被...
Java动态代理是Java提供的一种在运行时创建代理对象的技术,主要由`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口组成。在这个简单的Java动态代理实例中,我们将探讨如何利用这两个核心...
Java动态代理机制是Java语言提供的一种强大的功能,它允许在运行时创建代理对象来实现指定的接口。这一机制使得我们可以在不修改已有代码的情况下,为已有接口增加额外的功能或者增强已有功能的行为。在Java中,动态...
Java动态代理机制的优点在于灵活性和便捷性,它允许在运行时动态创建符合特定接口的代理对象,无需对原有代码做任何修改,使得我们可以方便地实现诸如日志、事务控制等跨切面的逻辑。不过,动态代理仅限于代理接口,...
Java动态代理实现AOP Java动态代理是实现Aspect Oriented Programming(AOP)的重要手段。在Java中,动态代理可以通过java.lang.reflect InvocationHandler接口和java.lang.reflect.Proxy类来实现。AOP的主要思想...
Java动态代理是Java编程中一个非常重要的特性,它允许我们在运行时创建代理对象来代替目标对象,以便在不修改原有代码的情况下对目标对象的行为进行增强或扩展。在Java.lang.reflect包下,动态代理主要涉及两个核心...
对代理模式与Java动态代理类的理解说明
总之,基于Java动态代理和反射机制实现ORM,可以有效地解耦业务逻辑和数据库操作,提高代码的可读性和可维护性。虽然现有的ORM框架如Hibernate、MyBatis已经相当成熟,但对于学习和理解Java的高级特性,这样的实践...