cglib代理实例

前言:如果感觉到使用java动态代理,必须要写接口麻烦。想直接使用类的话,就用cglib吧

目标对象:

public class Target {  
  
    public String execute() {  
        String message = "----------test()----------";  
        System.out.println(message);  
        return message;  
    }  
}

 

拦截器:

import net.sf.cglib.proxy.MethodInterceptor;  
import net.sf.cglib.proxy.MethodProxy;  
  
import java.lang.reflect.Method;  
  
public class MyMethodInterceptor implements MethodInterceptor {  
  
    public Object intercept(Object object, Method method, Object[] args,   
MethodProxy methodProxy) throws Throwable {  
        System.out.println(">>>MethodInterceptor start...");  
        Object result = methodProxy.invokeSuper(object,args);  
        System.out.println(">>>MethodInterceptor ending...");  
        return "hahahh";  
    }  
}

 

测试类:

import net.sf.cglib.proxy.Enhancer;  
  
public class TestCglibProxy  {  
  
    public static void main(String rags[]){  
        Target target = new Target();  
        TestCglibProxy test = new TestCglibProxy();  
        Target proxyTarget = (Target)test.createProxy(Target.class);  
        String res=proxyTarget.execute();  
        System.out.println(res);  
    }  
  
    public Object createProxy(Class targetClass){  
        Enhancer enhancer = new Enhancer();  
        enhancer.setSuperclass(targetClass);  
        enhancer.setCallback(new MyMethodInterceptor());  
        return enhancer.create();  
    }  
}  

 

运行结果:

C:/classes>java -cp .;C:/classes/cglib-nodep-2.1_3.jar TestCglibProxy 
>>>MethodInterceptor start... 
----------test()---------- 
>>>MethodInterceptor ending... 
hahahh

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值