CGLIB【理解】【難點】

1.AOP內部工作原理是通過代理對象實現織入功能

對於有接口實現的對象使用JDK動態代理

對於無接口實現的對象使用Cglib動態代理

2.CGLIB(code generator library)代碼生成庫——第三方技術

作用:動態的生成字節碼

CGLIB中的核心對象是Enhance對象,它的作用是創建一段動態的類字節碼。

CGLIB可以對任意的類進行代理,JDK的代理只能對實現接口的類進行代理

public class MyCglibProxyObject implements MethodInterceptor {

//提供一個方法用於創建Animal類的代理對象

public Animal createCglibProxyObject(){

//1.在內存中創建一個動態的類的字節碼

Enhancer enhancer = new Enhancer(); //此時並沒有做繼承

//2.爲其指定父類

//除了完成繼承關係外,還將父類所有的方法名反射過來,並在自己的類中創建了這些方法 enhancer.setSuperclass(Animal.class);

//3.指定其回調操作

enhancer.setCallback(this);

//4.使用該類創建對象

return (Animal) enhancer.create();

}

public Object intercept(Object proxy, Method method, Object[] args,MethodProxy methodProxy) throws Throwable {

if(method.getName().equals("eat")){

System.out.println("吃前來個開胃菜");

}

return methodProxy.invokeSupper(proxy, args);

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章