cglib简单的小实例
来源:互联网 发布:金桥软件公园 编辑:程序博客网 时间:2024/05/03 20:07
cglib和Jdk的动态代理相比,它的优点是目标类不用实现一个接口。
代码实现:
目标类
package cglib;public class ClassHasNoInterface {public void method(){System.out.println("建立自己的知识体系还是很重要的,尽管觉得麻烦");}public void function(){System.out.println("如果我只停留在使用的别人开发的工具阶段,那么再过5年我也对不起程序员这个称呼");}}
代理类
package cglib;import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;public class CglibTs implements MethodInterceptor{private Enhancer enhancer = new Enhancer();public Object getProxy(Class clazz){//生成指定类对象的子类,也就是重写类中的业务函数,在重写中加入intercept()函数而已。enhancer.setSuperclass(clazz);//这里是回调函数,enhancer中肯定有个MethodInterceptor属性。//回调函数是在setSuperclass中的那些重写的方法中调用---猜想enhancer.setCallback(this);//创建这个子类对象return enhancer.create();}public Object intercept(Object obj, Method method, Object[] args,MethodProxy proxy) throws Throwable {System.out.println(method.getName()+"执行之前做一些准备工作");//一不小心写成下面被注释一行代码了。 StackOverflowError//Object result = method.invoke(obj, args); 想不通Object result = proxy.invokeSuper(obj,args);System.out.println(method.getName()+"执行之后做一些准备的工作");return result;}}
测试类:
package cglib;public class MainTest {public static void main(String[] args) {CglibTs ct = new CglibTs();ClassHasNoInterface chni = (ClassHasNoInterface) ct.getProxy(ClassHasNoInterface.class);chni.method();chni.function();}}
这里对代理类中的method.invoke()出现内存溢出感到疑惑,会不是method是子类中的方法,形成了一个递归(死循环)造成的?等某天想看了在研究其中的源码,现在先放着。
- cglib简单的小实例
- cglib的小例子
- cglib的简单案例
- Cglib的简单使用
- 简单动态代理实例(使用cglib)
- 学习Ajax的简单联动小实例
- 学习Ajax的简单联动小实例
- DWR 实现联动的简单小实例
- Python 简单的几个小实例
- Spring-JDK与CGlib代理实现AOP简单实例
- CGLib的一个简单的例子
- Dynamic proxy 与cglib的简单实现
- cglib中Enhancer的简单使用
- cglib中Enhancer的简单使用
- cglib动态代理简单的例子
- cglib中Enhancer的简单使用
- cglib中Enhancer的简单使用
- 动态代理和cglib的简单理解
- [我的作品]魔法瓶
- 将jpeg文件转换成.h文件
- UIAlertView用法
- python3.3 遍历文件夹及文件 小例
- Java初始化顺序
- cglib简单的小实例
- android手机root后的安全问题
- 缓存(Cache)使用用法
- Longest Consecutive Sequence
- Gridview的RowDataBound事件可以做很多事情
- 算术表达式二叉树表示
- HDiff1.0和BSDiff4.3的对比测试
- SIGKILL/SIGSTOP/SIGTSTP
- 转载_结构体中四字节对齐的详解