文档章节

InvocationHandler 动态代理

younchen
 younchen
发布于 2015/10/16 17:27
字数 103
阅读 44
收藏 2

这货只能代理接口- -! 

public class TimeCaculateProxy implements InvocationHandler {

	private Class<?> obj;

	public static Object newInstance(Class<?> obj) {
		return java.lang.reflect.Proxy.newProxyInstance(obj.getClassLoader(),
				obj.getInterfaces(), new TimeCaculateProxy(obj));
	}

	private TimeCaculateProxy(Class<?> obj) {
		// Greet接口的實現:GreetImpl
		this.obj = obj;
	}

	public Object invoke(Object proxy, Method m, Object[] args)
			throws Throwable {
		Object result;
		try {
			// 自定義的處理
			System.out.println("--before method " + m.getName());
			// 調用GreetImpl中方法
			result = m.invoke(obj.newInstance(), args);
		} catch (InvocationTargetException e) {
			throw e.getTargetException();
		} catch (Exception e) {
			throw new RuntimeException("unexpected invocation exception: "
					+ e.getMessage());
		} finally {
			System.out.println("--after method " + m.getName());
		}
		return result;
	}
}


© 著作权归作者所有

共有 人打赏支持
younchen
粉丝 8
博文 94
码字总数 29970
作品 0
延吉
程序员
Java 动态代理实践AOP

大家都知道Spring中AOP是通过Java动态代理实现的,今天就来简单学习下demo。 Java动态代理主要有两个核心类,InvocationHandler和Proxy。 所有的Handler类要实现InvocationHandler接口,并关...

xingjm8511
2016/06/26
43
0
动态代理-JDK动态代理的内部实现

0.一个简单的JDK动态代理的例子 创建代理类接口 创建接口的实现 实现一个InvocationHandler 使用动态代理执行被代理类的方法 查看输出结果 1.JDK动态代理的源码实现 我们从上面的代码可以看出...

似是而非Sage
2016/08/23
31
0
Java动态代理1——阅读

JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代...

关河
2016/01/27
15
0
动态代理,动态代理设计模式 ,JDK动态代理,cglib动态代理

一:在看此篇代码示例前,先看静态代理, 链接地址:http://my.oschina.net/dyyweb/blog/656760 (代码示例) 二:JDK动态代理 动态代理与静态代理类对照的是动态代理类,动态代理类的字节码...

洋哥6
2016/04/14
118
0
JDK动态代理的简单实现

先理一下动态代理实现的思路: 实现功能: 自己定义一个类 Proxy, 通过Proxy的静态方法 newProxyInstance(Class<T> intface,InvocationHandler h)返回代理对象, intface: 被代理类的接口对象,...

wall--e
2016/04/27
257
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx 负载均衡

一.配置方式 1.轮询(默认) 优点:实现简单; 缺点:不考虑每台服务器处理能力 2.权重 weight默认是1。如果有多个配置权重的节点,比较相对值。 15:10,只代表访问8080端口的概率是访问908...

imbiao
43分钟前
1
0
jQuery学习笔记180923

jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法。我们将学习下面这些: addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一个或多个类 toggleClass() - 对被选...

颖伙虫
55分钟前
2
0
[python] colorama 模块 - 改变控制台输出文本的颜色

除了使用 PyQt 这样的图形化开发框架外,基本上 python 程序都是跑在控制台中的。很多时候,单纯使用黑白的文字不能很好地突出我们要显示的信息。有时候我们需要将错误的提示使用红色标注,而...

cometeme
今天
1
0
Makefile 学习 2 - 基于若干 Blog 的汇总

基于若干 Blog 汇总的 makefile 教程 陈皓 https://blog.csdn.net/haoel/article/details/2886 Makefile 进阶 1. Makefile 中的内容 显式规则。显式规则说明了,如何生成一个或多的的目标文件...

公孙衍
今天
1
0
NIO与BIO的区别、NIO的运行原理和并发使用场景

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的...

Java干货分享
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部