当前位置:  编程技术>java/j2ee

java代理 jdk动态代理应用案列

    来源: 互联网  发布时间:2014-10-22

    本文导语:  java代理有jdk动态代理、cglib代理,这里只说下jdk动态代理,jdk动态代理主要使用的是java反射机制(既java.lang.reflect包) 原理是(歌手、经纪人做例子): 建立一个公共的接口,比如:歌手public interface Singer; 用具体的类实现...

java代理有jdk动态代理、cglib代理,这里只说下jdk动态代理,jdk动态代理主要使用的是java反射机制(既java.lang.reflect包)
原理是(歌手、经纪人做例子):
建立一个公共的接口,比如:歌手public interface Singer;
用具体的类实现接口,比如:周杰伦,他是歌手所以实现Singer这个类,class MySinger implements Singer
建立代理类,这里也就是经纪人,他需要实现InvocationHandler类,并重写invoke方法
这样当有什么事情,要找周杰伦(具体类)的时候,就必须先到经纪人(代理类)那里处理,代理人在决定要不要与你见面(该方法要不要执行)
1、歌手接口
代码如下:

public interface Singer {

public abstract void sing();

public abstract String s();
}

2、具体的歌手
代码如下:

public class MySinger implements Singer {
public void sing() {
// TODO Auto-generated method stub
System.err.println("唱歌。。。。");
}
}

3、代理类(经纪人)
代码如下:

public class agent implements InvocationHandler{
public Object target;

//绑定
public Object bind(Object target){
this.target=target;
//必须放回Proxy
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}

//重新
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
Object o =null;
System.out.println("开始事务");
System.out.println("判断权限");

o = method.invoke(target, args);//执行方法

System.out.println("结束事务");
return o;
}
}

4、测试(为什么要间接口能,下面你会发现代理返回的是他们的接口类,这要一个代理类,就可以代理多个类,只要该类是同个一个接口的是实现)
代码如下:

public class Test {
public static void main(String[] args) {
//
agent a =new agent();
Singer s= (Singer) a.bind(new MySinger());
s.sing();
}
}

    
 
 

您可能感兴趣的文章:

  • java 静态代理 动态代理深入学习
  • 请问各位高手,如何用JAVA编一个代理服务器。
  • 如何用Java做代理,在线等待!!
  • Java类动态代理框架 Smartproxy
  • Java 的 MQTT 代理 Moquette-mqtt
  • Java的HTTP代理服务器 Smart Cache
  • Java动态代理 CGLib
  • 如何代理SUN 的JAVA认证和考试,DJLIHAO@SINA.COM,请将相关协议发到此信箱。500分,在线等
  • 如何代理SUN 的JAVA认证和考试,DJLIHAO@SINA.COM,请将相关协议发到此信箱。500分,在线等
  • 如何代理SUN 的JAVA认证和考试,DJLIHAO@SINA.COM,请将相关协议发到此信箱。500分,在线等
  • 用java开发一个基于Proxy(代理)的网络计费系统。有兴趣的来讨论讨论
  • java代理模式与动态代理模式详解
  • 通用 Java 监控代理 Zorka
  • 代理角色java设计模式之静态代理详细介绍
  • 和Java版高手在线讨论代理服务器的问题,讨论者都有分。
  • java实现动态代理示例分享
  • java动态代理和cglib动态代理示例分享
  • Java动态代理实现AOP
  • java实现动态代理方法浅析
  • java动态代理示例分享
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • 不太明白,利用RMI实现JAVA分布式应用 和 EJB实现JAVA分布式应用有什么区别。
  • 如何设置java应用程序的风格,如java风格,和windows风格!
  • Java GUI应用程序开发框架 Axualize
  • Java应用服务器 Virgo
  • JAVA桌面应用服务器 JDAP
  • Java与桌面应用程序
  • Java应用漏洞检测工具 LAPSE+
  • Java 应用自动更新框架 Jupidator
  • 讨论:Java是否适合编写通常的应用程序?
  • 怎样让java应用程序独立运行?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 动态 Java 库 orekit
  • Java动态跟踪分析工具 BTrace
  • 如何使用JAVA调用利用用VC写的已有的动态库
  • ****请你回答:最近java上面有什么动态阿?
  • 请问再java中怎样定义动态数组?
  • 怎样用java调用DLL动态连接库?
  • java中如何实现二维(多维)动态数组.谢谢
  • 请问在java中如何实现类的动态生成?谢谢
  • 如何在java程序中获得拨号上网分配的动态IP?
  • java能否动态开辟string数组?
  • 动态的可以用java吗?
  • Java动态聚类框架 Shoal
  • 很直接的问题:JAVA中的变量名可不可以是动态的?
  • 关于用java2D如何实现动态的生产计划图?
  • 如何用Java动态生成Excel文件
  • 一个关于在java中调用动态链接库的问题,高手指点!
  • Java中如何通过方法名动态调用方法?
  • JSplitPane如何动态调整左右帧的大小?如何监听窗口变大,缩小的事件?(java中好像没有)
  • 急,急,急!!!高分求购java实现动态树型菜单的源代码
  • 有没有java联sql7.0的方法,最好是动态的,不想用jdbc-odbc,谢谢了
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • Java中如何通过方法名动态调用方法? iis7站长之家
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3