博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK和Cglib动态代理小demo
阅读量:6030 次
发布时间:2019-06-20

本文共 1406 字,大约阅读时间需要 4 分钟。

一:JDK动态代理

package com.zkn.newlearn.proxyhandler;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import org.omg.CORBA.portable.InvokeHandler;/** *  * @author zkn * 此代理类 代理实现接口的类 * */public class JdkProxyHandler implements InvocationHandler {	private Object targetObject;		public Object createObject(Object obj){		this.targetObject = obj;		return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(), 				targetObject.getClass().getInterfaces(), this);	}		public Object invoke(Object proxy, Method method, Object[] args)			throws Throwable {				return method.invoke(targetObject, args);	}	}

 

2:CGLIB动态代理

package com.zkn.newlearn.proxyhandler;import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;/** *  * @author zkn *	代理类不能为final修饰的类 *	此代理类 代理的是没有实现接口的类 */public class CglibProxyHandler implements MethodInterceptor{	/**	 * 代理对象	 */	private Object targetObj;		public Object createObject(Object obj){		this.targetObj = obj;		Enhancer eh = new Enhancer();		eh.setSuperclass(this.targetObj.getClass());		eh.setCallback(this);		return eh.create();	}		public Object intercept(Object obj, Method arg1, Object[] arg2,			MethodProxy proxy) throws Throwable {				Object object = proxy.invoke(this.targetObj, arg2);//这里如果换成obj 会陷入死循环中		return object;	}	}

 

转载地址:http://llchx.baihongyu.com/

你可能感兴趣的文章
MyBatis配置多数据源
查看>>
分享一款本地音乐播放器源码
查看>>
关于CSS
查看>>
LeetCode 53 JS
查看>>
赶紧收藏!41个Web UI工具包资源免费及付费下载
查看>>
区块链技术,存在即合理,躺着就赚钱?
查看>>
git commit的信息如何修改,如何退出修改
查看>>
双十一移动端页面总结
查看>>
http转https后资源加载不显示
查看>>
你和大神之间只差一个高效工具
查看>>
Webpack3之雪碧图插件(WEBPACK-SPRITESMITH配置简述)
查看>>
互联网再迎来割据时代,小程序成为时代宠儿
查看>>
5 分钟掌握 JavaScript 实用窍门
查看>>
4g伪基站如何实现的
查看>>
JS里的Array
查看>>
共勉:作为一名程序员你应该怎么提一个高质量的问题?
查看>>
iOS-在项目中引入RSA算法
查看>>
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
node fs
查看>>