書山有路勤為徑,學(xué)海無涯苦作舟
切入點(diǎn)定義設(shè)計(jì)中的常用方式是:基于關(guān)注的程序作用域,限制捕獲連接點(diǎn)的范圍。這可以讓你即使控制在進(jìn)一步的切入點(diǎn)定義中將會(huì)涉及哪些連接點(diǎn)。 本章中的切入點(diǎn)相當(dāng)容易理解,并且他們是AspectJ中一些常用的元素。例如,廣泛使用的within(TypePattern)切入點(diǎn)將以!within(%THIS_ASPECT%)形式使用它。這個(gè)AspectJ術(shù)語限制了當(dāng)前方面之外的每個(gè)連接點(diǎn)的作用域,從而可以防止通知觸發(fā)對相同通知塊的遞歸調(diào)用,并導(dǎo)致一個(gè)無限循環(huán)。 一. 捕獲特定類中的所有連接點(diǎn) 使用within(TypePattern)切入點(diǎn),利用TypePattern指定特定類類型模式,within(TypePattern)切入點(diǎn)的語法如下: pointcut <pointcut name>(<any values to be picked up>) : within(<class>);
within(TypePattern)切入點(diǎn)具有3個(gè)關(guān)鍵特征: 1.within(TypePattern)切入點(diǎn)捕獲指定類作用域中的所有連接點(diǎn)。 2.within(TypePattern)切入點(diǎn)極少孤立使用。相反,它通常與切入點(diǎn)結(jié)合使用,用于減少將觸發(fā)附帶通知的連接點(diǎn)。 3.TypePattern可以包含通配符,用于選擇不同類上的一系列連接點(diǎn)。
二. 捕獲特定包中的所有連接點(diǎn) within(TypePattern)切入點(diǎn)提供一種有用的手段,它使用通配符在出現(xiàn)在每個(gè)類中的連接點(diǎn)中指定一個(gè)關(guān)注。可以在TypePattern中使用合適的通配符,從切入點(diǎn)邏輯的余下部分中包含或排除連接點(diǎn)的整個(gè)包。
三. 捕獲特定方法內(nèi)的所有連接點(diǎn) 使用withincode(Signature)切入點(diǎn)。withincode(Signature)切入點(diǎn)的語法如下: pointcut <pointcut name>(<any values to be picked up>) : withincode(<modifier> <class>.<method>(<paramter types>));
withincode(Signature)切入點(diǎn)有3個(gè)關(guān)鍵特征: 1. withincode(Signature)切入點(diǎn)指定了特定方法的本地作用域內(nèi)的所有連接點(diǎn)。 2. withincode(Signature)切入點(diǎn)極少孤立使用。相反,他通常與其他切入點(diǎn)結(jié)合使用,用于減少將觸發(fā)附帶通知的連接點(diǎn)。 3. Signaure可以包含通配符,用于選擇不同類的不同方法上的一系列連接點(diǎn)。
posted on 2008-08-25 10:32 Brian 閱讀(336) 評論(0) 編輯 收藏 所屬分類: 《AspectJ Cookbook》讀書筆記