1.切面(Aspects)常常通過通知(advice)、切點(pointcuts)和織入點(join points)來描述
2.通知(advice)有5種
- Before——前置通知,在調用目標方法之前執行通知定義的任務;
- After——后置通知,在目標方法執行結束后,無論執行結果如何都執行通知定義的任務;
- After-returning——后置通知,在目標方法執行結束后,如果執行成功,則執行通知定義的任務;
- After-throwing——異常通知,如果目標方法執行過程中拋出異常,則執行通知定義的任務;
- Around——環繞通知,在目標方法執行前和執行后,都需要執行通知定義的任務。
3.織入點
在應用中可能有很多個機會可以應用通知,這些機會就叫做織入點。
織入點可能是正在調用的方法、正在拋出的異常或者是正在被修改的屬性。
4.切點
如果說通知是定義了切面的what和when這兩個方面,那么切點就定義了where。切點指定一個或者多個織入點,而通知可以通過切點接入。通常情況下可以使用明確的類名和函數名或者定義了匹配模式的正則表達式來定義切點;還有一些AOP框架支持定義動態切點(dynamic pointcuts),可以在運行時根據函數參數值決定是否應用通知。
INTRODUCTIONS
你可以通過introduction給現有的類增加方法或者屬性。例如,可以定義一個通知類Auditable,用于保存某個對象被修改前的上一個狀態——定義一個局部變量來保存這個狀態,然后使用setLastModified(Date)方法設置狀態。類似于設計模式中的裝飾者模式——在不改變現有類的基礎上為之增加屬性和方法。