說明
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代理如何使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!