書山有路勤為徑,學海無涯苦作舟
一. 捕獲何時訪問對象的屬性 使用get(Signature)切入點。get(Signature)切入點的語法如下: pointcut <pointcut name>(<any values to be picked up>) : get(<optional modifier> <type> <class>.<field>); get(Signature)具有4個關鍵特征: 1.get(Signature)切入點會觸發直接在其中(而不僅僅是在訪問器方法的調用上)訪問屬性的通知。 2.get(Signature)切入點不能捕獲對靜態屬性的訪問,盡管從AspectJ的語法角度講以這種方式定義切入點是完全合法的。 3.Signature必須解析成特定類的屬性。 4.Signature可以包含通配符,用于選擇不同屬性上的一系列連接點。
你可能期待類使用static和final關鍵字定義一個常量屬性,這樣,在訪問這個常量時你就可能使用get(Signature)切入點來捕獲。
二. 捕獲訪問的字段值 使用after returning(<ReturnValue>)形式的通知。它在聲明的returning()部分中帶有一個標識符,用于包含訪問過的值。
三. 捕獲何時修改對象的字段 使用set(Signature)切入點。set(Signature)切入點的語法如下: pointcut <pointcut name>(<any values to be picked up>) : set(<optional modifier> <type> <class>.<field>); set(Signature)具有4個關鍵特征: 1.set(Signature)切入點在修改字段時觸發。 2.set(Signature)切入點不能捕獲對靜態字段的修改,盡管從AspectJ的語法角度講以這種方式定義切入點是完全合法的。 3.Signature必須解析成特定類的屬性。 4.Signature可以包含通配符,用于選擇不同屬性上的一系列連接點。
四. 在修改字段時捕獲它的值 結合使用args([Types | Identifiers])切入點和set(Signature)切入點,展示字段的新值,該字段被設置成切入點上的標識符,可將其傳遞給相應的通知。
posted on 2008-08-22 10:43 Brian 閱讀(1180) 評論(0) 編輯 收藏 所屬分類: 《AspectJ Cookbook》讀書筆記