JDK和Cglib动态代理小demo
2016-01-24 18:19
337 查看
一:JDK动态代理
2:CGLIB动态代理
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; } }
相关文章推荐
- 数据挖掘学习笔记-决策树算法浅析(含Java实现)
- Java byte数组转有符号int
- hdu1850 Being a Good Boy in Spring Festival
- spring 配置文件中的占位符 使用 context:property-placeholder
- 简单的java爬虫实现
- Java实现Windows系统服务 JavaService
- C 与 JAVA 的对比分析
- 深入理解Java:注解(Annotation)自定义注解入门
- 使用struts2+spring+hibernate测试多对多关系映射的时候出现懒加载问题:could not initialize proxy - no Session
- JavaEE Tutorials (30) - Duke综合案例研究示例
- JavaEE Tutorials (29) - Duke辅导案例研究示例
- JavaEE Tutorials (28) - Duke书店案例研究示例
- JavaEE Tutorials (27) - Java EE的并发工具
- JavaEE Tutorials (26) - 批处理
- JavaEE Tutorials (25) - 使用Java EE拦截器
- JavaEE Tutorials (24) - 资源适配器示例
- Java如何把String[]类型的记录插入到Mysql中
- 使用Eclipse创建Maven Web工程
- JavaEE Tutorials (23) - 资源适配器和契约
- JavaEE Tutorials (22) - 事务