JDK自带的动态代理支持必须要求基于接口编程,使用
java.lang.reflect.InvocationHandler和
java.lang.reflect.Proxy,请看下面的例子:
首先是接口:
package proxy;
public interface HelloWorld {
public String helloWord();
}
然后是接口实现类:
package proxy;
public class HelloWorldImpl implements HelloWorld {
@Override
public String helloWord() {
System.out.println("hello");
return "hello";
}
}
接着我们写一个代理的处理类:
package proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class HelloWordHandler implements InvocationHandler {
private Object obj;
public HelloWordHandler(Object obj)
{
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
doBefore();
Object result = method.invoke(obj, args);
doAfter();
return result;
}
private void doBefore()
{
System.out.println("before method invoke!");
}
private void doAfter()
{
System.out.println("after method invoke!");
}
}
最后这个是测试类
package proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
InvocationHandler handler = new HelloWordHandler(new HelloWorldImpl());
HelloWorld proxy = (HelloWorld)Proxy.newProxyInstance(
HelloWorldImpl.class.getClassLoader(),
HelloWorldImpl.class.getInterfaces(),
handler);
proxy.helloWord();
}
}
分享到:
相关推荐
一个简单的java动态代理的实例
java动态代理例子,这里面有两个例子,一个是jdk的动态代理,一个是cglib的动态代理,让你明白什么是动态代理,动态代理可以做什么。
Java 动态代理 - Java 动态代理 - 代理模式 - 静态代理 - 动态代理 - JDK 动态代理 - CGLIB 动态代理 - Javassist 代理 - ASM 代理 这篇文章我们来聊一下 Java 中的动态代理。 动态代理在 Java 中有着广泛...
主要讲述Java反射机制与设计模式之一:代理模式的原理与应用;同时详细讲述了Java对代理模式的支持以及Java中动态代理的原理,应用与实践。
这里提供了静态代理和动态代理的入门写法~一看即懂!
- 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事背景: 小明想...
动态代理及其生成的代理类,可以反编译查看其类的结构。
详细讲解java的reflect包的,阐述反射机制及动态代理的细节问题。其中动态代理部分内容参考网上资料。读完此文,相信会对javaf反射机制有一个完整清楚的了解。尤其应该看看其他中代码举例部分。
Java中提供了一个java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现动态代理。代理类在运行时会根据被代理接口自动生成,并且可以通过InvocationHandler接口对方法进行增强。
一个有关JAVA动态代理机制的例子,用eclipse开发的,如果有对Java有兴趣的朋友,不妨先拿去看一看。
利用注解对一个JavaBean进行动态代理。
CGLIB是一个强大的、高性能的代码生成库。它被广泛使用在基于代理的AOP框架(例如Spring AOP和...EasyMock和jMock作为流行的Java测试库,它们提供Mock对象的方式来支持测试,都使用了CGLIB来对没有接口的类进行代理。
JAVA动态代理的例子 一个简单的例子 初学者可以下载试试
Java 实现免费代理IP的获取方式 并动态实时校验是否有效,java文件项目内含有Jsoup的Jar包(Jsoup是加工过的,含请求),有2个主入口程序: 其一:用于请求代理IP,并立即校验是否是一个有效的代理IP,如果有效,...
JAVA的动态代理的一个例子
这是一个经典java动态代理和反射的例子、、这在里分享给大家、、希望对大家有用、、、
cglib是针对类来实现代理的,原理是对指定的业务类生成一个子类,并覆盖其中业务方法实现代理。因为采用的是继承,所以不能对final修饰的类进行代理
通过详细的一个Proxy实例,详尽的讲解了JAVA动态代理的实现和一些基本知识。
java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar /** * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法...
本文通过分析Java动态代理的机制和特点,解读动态代理类的源代码,并且模拟推演了动态代理类的可能实现,向读者阐述了一个完整的 Java动态代理运作过程,希望能帮助读者加深对Java动态代理的理解和应用。本文的标签...