javascript
Spring的AOP理解
OOP面向?qū)ο?#xff0c;允許開發(fā)者定義縱向的關(guān)系,但并不適用于定義橫向的關(guān)系,會導(dǎo)致大量代碼的重復(fù),而不利于各個模塊的重用。
AOP,一般稱為面向切面,作為面向?qū)ο蟮囊环N補充,用于將那些與業(yè)務(wù)無關(guān),但卻對多個對象產(chǎn)生影響的公共行為和邏輯,抽取并封裝為一個可重用的模塊,這個模塊被命名為“切面”(Aspect),減少系統(tǒng)中的重復(fù)代碼,降低了模塊間的耦合度,提高系統(tǒng)的可維護性。可用于權(quán)限認(rèn)證、日志、事務(wù)處理。
AOP實現(xiàn)的關(guān)鍵在于 代理模式,AOP代理主要分為靜態(tài)代理和動態(tài)代理。靜態(tài)代理的代表為AspectJ;動態(tài)代理則以Spring AOP為代表。
(1)AspectJ是靜態(tài)代理,也稱為編譯時增強,AOP框架會在編譯階段生成AOP代理類,并將AspectJ(切面)織入到Java字節(jié)碼中,運行的時候就是增強之后的AOP對象。
(2)Spring AOP使用的動態(tài)代理,所謂的動態(tài)代理就是說AOP框架不會去修改字節(jié)碼,而是每次運行時在內(nèi)存中臨時為方法生成一個AOP對象,這個AOP對象包含了目標(biāo)對象的全部方法,并且在特定的切點做了增強處理,并回調(diào)原對象的方法。
?
總結(jié)
以上是生活随笔為你收集整理的Spring的AOP理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring 的优点
- 下一篇: gradle idea java ssm