說明
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電腦。