問(wèn)題: Spring AOP(面向切面)編程的原理 ?
- AOP面向切面編程,它是一種思想。它就是針對(duì)業(yè)務(wù)處理過(guò)程中的切面進(jìn)行提取,以達(dá)到優(yōu)化代碼的目的,減少重復(fù)代碼的目的。
就比如,在編寫業(yè)務(wù)邏輯代碼的時(shí)候,我們習(xí)慣性的都要寫:日志記錄,事物控制,以及權(quán)限控制等,每一個(gè)子模塊都要寫這些代碼,代碼明顯存在重復(fù)。這時(shí)候,我們運(yùn)用面向切面的編程思想,采用橫切技術(shù),將代碼中重復(fù)的部分,不影響主業(yè)務(wù)邏輯的部分抽取出來(lái),放在某個(gè)地方進(jìn)行集中式的管理,調(diào)用。
形成日志切面,事物控制切面,權(quán)限控制切面。
這樣,我們就只需要關(guān)系業(yè)務(wù)的邏輯處理,即提高了工作的效率,又使得代碼變的簡(jiǎn)潔優(yōu)雅。這就是面向切面的編程思想,它是面向?qū)ο缶幊趟枷氲囊环N擴(kuò)展。
- AOP的使用場(chǎng)景:
緩存、權(quán)限管理、內(nèi)容傳遞、錯(cuò)誤處理、懶加載、記錄跟蹤、優(yōu)化、校準(zhǔn)、調(diào)試、持久化、資源池、同步管理、事物控制等。
AOP的相關(guān)概念:
切面(Aspect)
連接點(diǎn)(JoinPoint)
通知(Advice)
切入點(diǎn)(Pointcut)
代理(Proxy):
織入(WeaVing)
- Spring AOP的編程原理?
代理機(jī)制
JDK的動(dòng)態(tài)代理:只能用于實(shí)現(xiàn)了接口的類產(chǎn)生代理。
Cglib代理:針對(duì)沒(méi)有實(shí)現(xiàn)接口的類產(chǎn)生代理,應(yīng)用的是底層的字節(jié)碼增強(qiáng)技術(shù),生成當(dāng)前類的子類對(duì)象。
更多建議: