java cglib动态代理
java cglib动态代理
yan5845hao 发表于7个月前
java cglib动态代理
  • 发表于 7个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

  • cglib是个什么鬼?
cglib 主要是在ASM的基础上实现的,cglib 对于final的方法无法处理。
cglib 主要是在代理类上生成子类,对父类的方法执行前、执行后、异常等添加执行逻辑。
  • 基类
package com.uwo.resources.ui.proxy.cglib;
public class Uwo{
    public String hello(String name){  
        System.out.println("====" + name + "====");  
        return "hello," + name;
    }
} 
  • 实现MethodInterceptor
package com.uwo.resources.ui.proxy.cglib;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
/**
 * Created by yanhao on 2017/5/12.
 */
public class UwoInterceptor implements MethodInterceptor{
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy proxy) throws Throwable {
        System.out.println("前");
        Object value = proxy.invokeSuper(o, objects);
        System.out.println("后");
        return value;
    }
}
  • 实现
Enhancer hancer = new Enhancer();
// 设置代理对象的父类  Uwo.class
hancer.setSuperclass(Uwo.class);
// 设置现实MethodInterceptor接口对象
hancer.setCallback(new UwoInterceptor());
// 创建代理对象  
Uwo uwo = hancer.create();  
System.out.println(uwo.hello("YH"));  
共有 人打赏支持
粉丝 7
博文 102
码字总数 20648
×
yan5845hao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: