1. 程式人生 > >Spring 學習(十九)——重用切入點表示式

Spring 學習(十九)——重用切入點表示式

在編寫 AspectJ 切面時, 可以直接在通知註解中書寫切入點表示式. 但同一個切點表示式可能會在多個通知中重複出現.

AspectJ 切面中, 可以通過 @Pointcut 註解將一個切入點宣告成簡單的方法. 切入點的方法體通常是空的, 因為將切入點定義與應用程式邏輯混在一起是不合理的.

切入點方法的訪問控制符同時也控制著這個切入點的可見性. 如果切入點要在多個切面中共用, 最好將它們集中在一個公共的類中. 在這種情況下, 它們必須被宣告為 public. 在引入這個切入點時, 必須將類名也包括在內. 如果類沒有與這個切面放在同一個包中, 還必須包含包名.

其他通知可以通過方法名稱引入該切入點

.

 

 

引入通知(基本不怎麼使用)

引入通知是一種特殊的通知型別. 它通過為介面提供實現類, 允許物件動態地實現介面, 就像物件已經在執行時擴充套件了實現類一樣.

引入通知可以使用兩個實現類 MaxCalculatorImpl MinCalculatorImpl, ArithmeticCalculatorImpl 動態地實現 MaxCalculator MinCalculator 介面. 而這與從 MaxCalculatorImpl MinCalculatorImpl 中實現多繼承的效果相同. 但卻不需要修改 ArithmeticCalculatorImpl

的原始碼

引入通知也必須在切面中宣告

在切面中, 通過為任意欄位新增@DeclareParents 註解來引入宣告.

註解型別的 value 屬性表示哪些類是當前引入通知的目標. value 屬性值也可以是一個 AspectJ 型別的表示式, 以將一個即可引入到多個類中defaultImpl 屬性中指定這個介面使用的實現類

引入通知示例程式碼