
說明
1.Cglib代理可以稱為子類代理,是在記憶體中建構子類對象,從而擴展目標對象的功能。
靜態代理程式和JDK代理程式都需要一個物件來實作一個介面。有時候代理對像只是一個單獨的對象,Cglib代理可以在這個時候使用。
2、Cglib透過Enhancer產生代理類,透過實作MethodInterceptor接口,實作intercept方法。
可以在該方法中加入增強方法,並且可以使用反射Method或MethodProxy繼承類別來呼叫原始方法。
實例
public class TVProxyCglib implements MethodInterceptor {
//給目標物件建立一個代理物件 public Object getProxyInstance(Class c){
//1.工具類別 Enhancer enhancer = new Enhancer();
//2.設定父類別 enhancer.setSuperclass(c);
//3.設定回呼函數 enhancer.setCallback(this);
//4.建立子類別(代理物件)
return enhancer.create();
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
System.out.println("TVProxyFactory enhancement.....");
Object object = methodProxy.invokeSuper(o, objects);
return object;
}
}以上就是java中Cglib代理的使用,希望對大家有幫助。
更多Java學習指路: java教程
本教學操作環境:windows7系統、java10版,DELL G3電腦。