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