文档章节

InvocationHandler 动态代理

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

这货只能代理接口- -! 

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动态代理,cglib动态代理

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

洋哥6
2016/04/14
118
0
动态代理-JDK动态代理的内部实现

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

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

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

关河
2016/01/27
15
0
JDK动态代理的简单实现

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

wall--e
2016/04/27
257
0
JDK动态代理与Cglib动态代理(转载)

spring容器通过动态代理再结合java反射思想可以使得方法调用更加简洁 一、动态代理概述: 与静态代理对照(关于静态代理的介绍 可以阅读上一篇:JAVA设计模式之 代理模式【Proxy Pattern】(...

思悟修
2015/08/14
0
0
浅析JDK动态代理的源码

最近查看了一下JDK实现动态代理的部分源码,这里做一个简单的记录。 1. JDK 动态代理的使用 JDK为我们实现了动态代理,它是基于接口的实现,也就是说要为某个类动态地生成一个代理类的话,这...

JoeyXie
2016/01/23
461
0
java的动态代理机制详解

在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能...

小风89
2016/06/28
25
0
JDK 动态代理

JDK 代理 java中的代理是指某个对象的一个替代者,该替代者暂时担任了被代理对象的职责,代理对象包含了原始对象的所有方法,而且还有可能会附加一些额外的方法。代理对象就是在不破坏原始对...

向阳而生
2015/11/25
143
2
动态代理

代理模式其实有两大类:静态代理与动态代理,之前的例子中,采用实现同一接口的方式来显式创建的代理类的方式属于静态代理模式,这种模式简单易理解,缺点就是一旦需要进行代理模式设计的类有...

lzwxx
2017/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6用的外库遇到的问题

要用到wmi库 pip install wmi 装后不能用还要安装pywin32库。 要用到crypto加密模块安装pip instal pycrypto装后不能用。要安装pycryptodome。...

oisan_
14分钟前
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
14分钟前
0
0
【Spring 系列 给IOC容器添加组件的几种方式总结】

给Spring 注册Bean的几种方式总结。其中使用@Import注解是Spring Boot 完成自动配置的一个核心注解。 1、Spring 中给IOC容器添加组件的几种方式 在Spring的配置文件中,配置Bean(基于XML方式...

HansonReal
15分钟前
4
0
bootstrapTable语言包设置

###方法一引入不同的语言包 <script src="bootstrap-table-zh-CN.js"></script> ###方法二引入全语言包 <script src="bootstrap-table-locale-all.min.js"></script>//然后在初始化前设计默......

momo1987
16分钟前
0
0
Saltstack 常用命令

1、拷贝文件到客户端 # salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt 2、拷贝目录到客户端 # salt 'slaver.test.com' cp.get_dir salt://test /tmp 3、显示存活的客户......

硅谷课堂
17分钟前
0
0
致初学者-如何学好Python这门编程语言?[图]

致初学者-如何学好Python这门编程语言?[图]: 对于很多Python3初学者,往往会面临以下问题:Python2和Python3我该学习哪一个?是否要安装Linux系统学习Python?Python3有各种版本我该安装哪...

原创小博客
19分钟前
1
0
E31---setopt=protected_multilib=false

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。 yum install -y zlib zlib-devel 1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multil...

侠客行之石头
24分钟前
0
0
HTTP常见面试题

Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,H...

JK_OPERA
25分钟前
0
0
python爬取站长素材网页图片保存到ppt中

网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import requestsfrom bs4 import BeautifulSoupfrom pptx import Presentationfrom pptx.util import Inchesimpor......

你为什么不吃药
27分钟前
1
0
Ubuntu 18.04 swap空间的修改

一、准备工作 执行“sudo swapon -s”命令,查看是否已经存在swap file 二、修改swap file # 如果第一步存在swapfile则需要先禁用sudo swapoff /swapfile# 修改swap 空间的大小为2Gs...

Iceberg_XTY
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部