spring AoP学习 -----AoP的基本概念
Aop的發展經理過兩個階段,第一個是靜態Aop階段,第二個是動態Aop階段。
靜態Aop階段:作為第一代的Aop,以最初的AspectJ為代表,特點是以相應的橫切關注點以Aspect形式實現之后,會通過特定的編譯器,將實現后的Aspect編譯并織入到系統的靜態類中,優點是Aspect直接以java字節碼的形式編譯到java類中,java虛擬機可以像通常一樣加載java類運行,不會給系統運行造成任何性能損失。
動態Aop階段:作為第二代的Aop,大都通過java語言提供的各種動態特性來實現第一代Aop織入到當前系統的過程,這類產品有:JBoss ?AOP,Spring AOP,Naning AOP ,還有就是第一代的AOP產品AspectJ在融合了Aspect Werkz框架之后,成為唯一支持靜動態的AOP產品。 優點:靈活易用,和靜態Aop最大的不同就是,Aop的注入過程在系統運行開始之后運行,而不是預編譯到系統中,而且織入信息大部分采用外部xml,可以動態更改織入邏輯。缺點:帶來性能問題,因為大多數Aop的實現都是在類加載或者系統運行期間,采用對系統字節碼進行炒作方式來完成Aspect到系統的織入。
Aop實現機制: ?
Aop中的術語:
Joinpoint:在執行Aop功能模塊織入到oop的功能模塊中時那個執行點稱之為JoinPoint。
較為常見的織入點:
這些都是比較常見的joinpoint,其實每一個認為必要的執行時都可以作文joinpoint,但某些位置Aop產品比較難以捕捉。
Pointcut:是Joinpoint的表述方式。將橫切邏輯織入當前系統的過程中,需要產后照pointcut規定的JoinPoint信息。
pointcut的表述方式:
1.直接指定joinpoint所在方法名稱。
2.正則表達式
3.使用指定的pointcut表述語言
Advice:是單一橫切關注點邏輯的載體,他代表將會織入到joinpoint的橫切邏輯
Advice組成的具體形式:
Introduction:可以為原有的對象添加新的特征或者行為,Introduction類型的Advice因實現技術的不同,在具體軟件環境中可以存在性能差異。
Aspect:是對系統中的橫切關注點邏輯進行模塊化封裝的Aop概念實體。
織入和織入器:完成橫切關注點邏輯到 系統的最終織入。
AspectJ有專門的編譯器完成織入操作,即ajc,JBoss AOP采用自定義的類加載器來完成最終織入,spring AOP使用一組類來完成最終的織入操作。Proxy Factory類是Spring AOP中最通用的織入器。
目標對象:符合pointcut所指定的條件,將在織入過程中被織入橫切邏輯的對象,稱為目標對象(Target Object)
轉載于:https://www.cnblogs.com/Qbright/archive/2012/07/23/2599242.html
總結
以上是生活随笔為你收集整理的spring AoP学习 -----AoP的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发之简单备忘录
- 下一篇: 李莉c语言,李莉