cglib动态代理_讲解
来源:互联网 发布:大数据泄露 编辑:程序博客网 时间:2024/06/06 15:54
JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑,所以用final修饰的方法将不能实现代理。同样我们采用jdk动态案例分析说明
1、创建实体类
package www.csdn.spring.cglib.proxy;//真实主题角色public class SayGoodByeImpl {public void say(String content) {System.out.println("say:" + content);}}
2、测试说明:
package www.csdn.spring.cglib.proxy;import org.junit.Test;public class TestSay {@Testpublic void say(){//真实主题角色SayGoodByeImpl sayGoodByeImpl = new SayGoodByeImpl();//自己和女朋友说sayGoodByeImpl.say("咱们分手吧!");}}
3、采用cglib代理实现
package www.csdn.spring.cglib.proxy;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 CglibProxy implements MethodInterceptor {// 目标对象private Object target;// 创建代理对象public Object createProxyInstance(Object target) {this.target = target;Enhancer enhancer = new Enhancer(); // 用于生成代理对象的enhancer.setSuperclass(this.target.getClass());// 用于设置代理对象的父类enhancer.setCallback(this); // 设置回调return enhancer.create(); // 创建代理对象};/** * proxy:目标对象代理的实例 method:目标对象调用父类方法的method实例 args:调用父类方法传递参数 * methodProxy:代理的方法去调用目标方法 */@Overridepublic Object intercept(Object proxy, Method method, Object[] args,MethodProxy methodProxy) throws Throwable {Object returnValue = null;// 目标方法执行之前的操作beforeMethod();// 执行目标方法returnValue = methodProxy.invoke(target, args);// 目标方法执行之后的操作afterMethod();return returnValue;}public void beforeMethod() {System.out.println("---------------------目标方法之前执行");}public void afterMethod() {System.out.println("---------------------目标方法之后执行");}}
4、测试说明:
package www.csdn.spring.cglib.proxy;import org.junit.Test;public class TestSay {@Testpublic void say(){//真实主题角色SayGoodByeImpl sayGoodByeImpl = new SayGoodByeImpl();//代理角色CglibProxy cglibProxy = new CglibProxy();//创建了一个 目标类的子类的对象 SayGoodByeImpl proxy = (SayGoodByeImpl) cglibProxy.createProxyInstance(sayGoodByeImpl);//代理说proxy.say("你和他分手吧!");}}
- cglib动态代理_讲解
- CGLIB动态代理介绍和实例讲解
- JDK动态代理_讲解
- java动态代理jdk与cglib详细讲解
- 动态代理-CGLib动态代理
- 黑马程序员_动态代理入门讲解
- 最详细的代理讲解--JDK动态代理和cglib代理
- 初识CGLIB动态代理
- Cglib 动态代理
- CGLib 动态代理
- 动态代理-->cglib
- cglib动态代理介绍
- cglib动态代理
- CGLIB 动态代理。
- CGLIB动态代理
- CGLIB实现动态代理
- cglib 动态代理
- cglib动态代理模式
- C++拷贝构造函数(深拷贝,浅拷贝)参考二
- Revit 2014 API新功能网络视频讲座 5月14号下午14:30(可下载讲座视频)
- Objectvie-C XML解析
- UVA 10305 Ordering Tasks
- POJ 2777 Count Color(线段树+位运算)
- cglib动态代理_讲解
- 推荐 2013 年最新的 10 款 jquery 插件
- php为什么函数方法名大小写不敏感
- zf异常处理机制
- Flex与后台(Java)交互
- C# 图片加水印、防盗链接图片 案例
- jquery实现ajax联动框
- android开发步步为营之4:客户端通过http和服务端进行交互
- COM编程常见问题:VC和VS中的不同