`
tenderuser
  • 浏览: 59390 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

不想说了。。 代理,动态代理

    博客分类:
  • java
阅读更多
动态代理。。。使用cglib 这个jar文件。。
package test.dynasic;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

public class TestDynasicProxy implements MethodInterceptor {

	@Override
	public Object intercept(Object proxy, Method method, Object[] args,
			MethodProxy methodProxy) throws Throwable {
		System.out.println("before method invoke  " + method.getName());
	[color=red]Object o = methodProxy.invokeSuper(proxy, args);[/color]
		System.out.println("after method invoke ");
		return o;
	}
	
	public static void main(String[]args){
		 Enhancer enhancer = new Enhancer();
		 enhancer.setSuperclass(DynasicProxy.class);
		 enhancer.setCallback(new TestDynasicProxy());
		 DynasicProxy dp = (DynasicProxy)enhancer.create();
		 dp.saySomething();
	}
	
}


class DynasicProxy{
	public void saySomething(){
		System.out.println("hello");
	}
}


java中的反射机制实现的代理,适合实现接口的类

package test;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class TestProxy {
	public static void main(String[]args){
		IProxy myProxy =   (IProxy) Proxy.newProxyInstance(MyProxy.class.getClassLoader(), MyProxy.class.getInterfaces(), new MyProxyHandler<IProxy>(new MyProxy()));
		String message = myProxy.saySomething();
		System.out.println(message);
	}
}


class MyProxy implements IProxy {
	public String saySomething(){
		System.out.println("hello");
		return "ok";
	}
}

class MyProxyHandler<T> implements InvocationHandler{
	private T t;
	
	public MyProxyHandler(T t){
		this.t = t;
	}
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		
		Object returnMessage = null;
		try{
			System.out.println("before method invoke  "+method.getName());
		[color=red]returnMessage = method.invoke(t, args);[/color]
			System.out.println(returnMessage);
			System.out.println("after method invoke");
		} catch(Exception e){
			e.printStackTrace();
		}
		return returnMessage;
	}
	
}


接口:

package test;

interface IProxy {
	public String saySomething();
}



无语了,红色的代码让我吃尽苦头。。。 在使用代理时,不可以在代理的实现中在使用代理来调用,不然就会不断地递归调用,知道堆栈溢出,最后崩溃。。。。
分享到:
评论

相关推荐

    Java 动态代理.md

    他指的是一个对象本身不做实际的操作,而是通过其他对象来得到自己想要的结果。这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 这里能体现出一个非常重要的编程思想:不要...

    java-jdk动态代理的实现demo

    实现了一份jdk动态代理的demo,做了详细注释,供以后复习使用,另外,这里为什么需要大于100个字节才能传资源?我就不想那么多不行吗???

    IP代理搜索器-自动搜索网上的免费代理

    现在许多人常用QQ(MSN/ICQ)上网聊天,但有时候在办公室或公司内部无法使用,这时你可以通过代理来实现,有很多人上网不想留下自己的真实地址,这时你可以通IP代理来实现。虽然现在网上有很我免费的IP代理,但哪个...

    QtAutoBrowser_V2.0(支持代理的自动浏览器)

    程序2.0版本的新功能特性 1,支持用代理自动访问网址列表,不用修改浏览器或者是本地连接的属性就能用代理来...3,支持在程序运行过程中动态的切换代理,代理想换就换;在高版本中会填加自动判断代理是否可用的功能。

    Java两种代理模式案例

    代理模式的小案例,静态代理和动态代理都有。不想写代码的可以下载下来看看。

    定时代理刷新网页工具

    功能: 代理IP 1、代理IP指定代理:代理IP文本框输入代理IP,如42.121.131.66:8080,然后点击代理 2、代理IP定时代理:代理IP文本框中为空即可,然后...2、定时随机刷新网页,把想刷新的网页地址放置在URL.TXT文件里;

    JAVA的反射机制与动态代理.pdf

    那个最近想看看Spring AOP的动态代理到底是个咋回事,特地学习了一下,写了个文档。 本文档先讲解了JDK的反射机制,然后是Proxy的动态代理、CGLIB的动态代理,因为这些是Spring AOP的底层技术,清楚了它们,你就更...

    socket实现HTTP代理服务器

    当该代理服务器收到IE发来的请求时,要将IE请求行中的webserver的域名(或者IP)剥去,再将请求转发给webserver,如果不注意这点而是直接毫无处理的把IE请求信息直接发给webserver某些网站会显示不了网页,比如新浪...

    AnyProxy代理

    只要把a.a.a.a:8080设置到AnyProxy,然后通过在AnyProxy的进程列表对你想要代理的IE进程(iexplore.exe)进行代理, 这样IE的网络数据都是通过AnyProxy再经过a.a.a.a:8080出去的。AnyProxy还提供了简单的连接、数据...

    在线代理程序下载(PHP)

    所有修改均在index.php中 不想保留我的链接的 可以修改去除 本程序支持5种语言 简体中文 繁體中文 English 曰本語 韩语,并可以根据用户电脑 语言自动转换 中文和英文 超适合用来挂GOOGLE广告 /images/ 图片目录有...

    ip代理切换

    可任意选择程序进行代理,在软件里添加想要软件, 自动给予ip代理, 也可以选择ip,代理ip出处都是来源各大好节点,速度快,并且都能用。 呵呵,是作弊的好东西,请24小时内删除,作于学习交流使用。

    简单的代理应用

    简单的代理应用.自己不想做的,声明一个协议,设置一个代理属性,让控制器称为代理的小例子

    nginx配置反向代理

    因此想使用nginx做为反向代理apache.整个配置安装过程很简单.在考虑高并发的情况下,在安装前就做了些优化.目前配置能抗住3000以上并发.好像不是特别大哦?呵~~ 但足以~~ 只是还有少量499问题..期待有人跟我讨论解决

    基于身份的门限多代理多签名方案

    同理,攻击者要想从部分代理签名Ui中获得代理签名者的私钥SPi也是不可能的。 &lt;BR&gt; b)该方案能抵抗合谋攻击,即只要攻击者的个数小于门限值,即使是内部成员进行攻击也不可能 href=...

    代理服务器架设技巧

    代理服务器使用与架设技巧.网上的代理服务器信息多,但想要请一个适合自己的“代理”其实并不容易,在此向大家介绍两种寻觅“代理”的方法。

    e语言-鱼刺多线程例程 [v4.7]代理智能提取

    |如果想不验证提取的代理直接使用 请设置为:不验证是否UTF8解码 : 验证代理返回的网页内容是否进行UTF8解码 1=解码 0=不解码提取附加协议头 : 验证代理时附加的HTTP协议头 默认=空(默认协议头)验证特征 : ...

    Python爬虫代理IP池实现方法

    不过呢,闲暇时间手痒,所以就想利用一些免费的资源搞一个简单的代理池服务。 1、问题 代理IP从何而来? 刚自学爬虫的时候没有代理IP就去西刺、快代理之类有免费代理的网站去爬,还是有个别代理能用。当然,如果你有...

    亚伟IP代理1.6.

    我很早就想编写一款代理软件,只是由于技术不到家,所有一直在耽搁着。去年5.12大地震之前我就计划做代理软件了。写了一个功能很小的,叫代理之猫,代码发在了我们学校的bbs里面。在余震不断的日子里,编写软件不...

    代理模式在android中使用

    代理设计模式是对象的结构模式,原理就是给某个对象提供一个代理对象...在有些情况下,一方不能或不想直接引用一个对象,而代理对象可以在双方之间起到中介的作用,这样可以大大降低彼此的耦合关系,提高彼此的灵活性。

Global site tag (gtag.js) - Google Analytics