961
魔獸
AOP
寫一個軟件係統,有業務需求和係統需求,日誌記錄,安全檢查,事務管理等是係統需求。用AOP的話來說,這些係統需求就是係統中的橫切關注點(cross-cutting concern),所以AOP引入了Aspect概念,用來模塊化形式對係統中的橫切關注點進行封裝。Aspect對於AOP,相當於Class對於OOP。
AOP畢竟是一種理念,實現這種理念畢竟需要一種現實的方式:AspectJ,AspectC,Aspect.NET等就是其實現的方式。以AspectJ為例子,將AO組件集成到OOP組件的過程稱為織入(weave)。
Joinpoint:怎麼理解?AO組件現在要織入到OOP組件中,需要知道在係統的哪些執行點上進行織入操作,這些執行點就是Joinpoint。
Joinpoint的類型:就是執行點上進行橫切關注點的織入,或者程序執行過程中任何時點都可以做為橫切邏輯的織入點,那麼這些織入點的類型7種:
1:方法調用(Method Call);
2:方法執行(Method Call Execution)
3:構造方法調用(Constructor)
4:字段設置(Field Set)
5:字段獲取(Field Get)
6:異常處理執行(Exception Handler Execution)
7:類初始化(Class initialization)。
Pointcut是什麼?其代表的是Joinpoint的表述方式。Pointcut規定了Joinpoint的信息。意思就是程序中Joinpoint那麼多,橫切邏輯過來不能一通的亂織入啊。所以橫切邏輯通過Pointcut給出指定多少個Joinpoint來開始幹活。
Pointcut的表述方式?1:直接指定Joinpoint所在的方法名稱,2:正則表達式(使用正則表達式的強大功能,來歸納表述需要符合某種條件的多組Joinpoint)3:使用特定的Pointcut表述語言。
Advice:是單一橫切關注點邏輯的載體,就是代表將要織入到Joinpoint的橫切邏輯。相當於Class中的Method.
Advice的形式:按照在Joinpoint位置執行時機的差異或則完成功能不同,分多種具體的形式:BeforeAdvice,AfterAdvice,等.....。
Aspect:是對係統中的橫切關注點邏輯進行模塊化封裝的AOP概念實體,包含多個Pointcut以及相關的Advice.
Target Object:符合Pointcut所指定的條件,將在織入過程中被織入橫切邏輯的對象,就是Target Object。
Weaving:AOP和OOP的的橋梁,完成織入過程就是Weaver(織入器).ProxyFactory是SpringAOP的通用織入器。
最後更新:2017-06-07 21:32:22