課程
/后端開發(fā)
/Java
/Spring入門篇
預編譯、運行期代理底層原理是什么?
2015-12-11
源自:Spring入門篇 5-1
正在回答
在Spring 中,引入了AspectJ的語法,他本質上使用的是動態(tài)代理的方式.
動態(tài)代理,分兩種實現(xiàn)模式:
1.使用接口(動態(tài)代理)
如果被代理的對象是面向接口編程的,那么Spring直接使用實現(xiàn)這些接口,然后把需要插入的內容在這個接口上下文中插入
2.使用繼承(CGLIB)
如果被代理的對象沒有基于接口編程,那么Spring會調用cglib庫,通過子類繼承的方式,動態(tài)插入需要的內容,并且調用父類的方法實現(xiàn)
cglib內部擁有一個小的字節(jié)碼處理框架asm,來轉換字節(jié)碼生成新的類.所以spring調用了cglib,相當于生成了一個被代理對象的子類,來取代被代理對象.
610666618 提問者
舉報
為您帶來IOC和AOP的基本概念及用法,為后續(xù)高級課程學習打下基礎
1 回答AspectJ是編譯期的AOP,在編譯期進行代碼檢查,并匹配連接點和切入點的代價是非常昂貴的。這是老師ppt的原話,我有個疑問,在編譯期進行代碼檢查,并匹配連接點和切入點為什么代價就大了?這個代價具體指的是什么?是時間?是系統(tǒng)資源?還是what?
2 回答代理方式是什么???
3 回答請問什么是代理模式,學代理模式的前置課程是什么?
1 回答這是代理模式中的靜態(tài)代理?
2 回答scope-proxy指定代理是什么意思
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關注慕課網(wǎng)微信公眾號
2015-12-11
在Spring 中,引入了AspectJ的語法,他本質上使用的是動態(tài)代理的方式.
動態(tài)代理,分兩種實現(xiàn)模式:
1.使用接口(動態(tài)代理)
如果被代理的對象是面向接口編程的,那么Spring直接使用實現(xiàn)這些接口,然后把需要插入的內容在這個接口上下文中插入
2.使用繼承(CGLIB)
如果被代理的對象沒有基于接口編程,那么Spring會調用cglib庫,通過子類繼承的方式,動態(tài)插入需要的內容,并且調用父類的方法實現(xiàn)
cglib內部擁有一個小的字節(jié)碼處理框架asm,來轉換字節(jié)碼生成新的類.所以spring調用了cglib,相當于生成了一個被代理對象的子類,來取代被代理對象.