書山有路勤為徑,學海無涯苦作舟
本章中描述的切入點支持捕獲另一個初始連接點作用域或環境內的所有連接點。每個連接點在程序的控制流程中都有一個具體位置,這為通過這里描述的切入點聲明捕獲的連接點提供了環境。 一. 捕獲通過初始連接點開始的程序控制流程內的所有連接點 使用cflow(Pointcut)切入點。cflow(Pointcut)切入點的語法如下: pointcut <pointcut name>(<any values to be picked up>) : cflow(<pointcut>);
cflow(Pointcut)切入點具有3個關鍵特征: 1.cflow(Pointcut)切入點捕獲在初始特定的連接點環境內遇到的所有連接點,這個初始連接點是通過另一個切入點選擇的。 2.捕獲的連接點包括初始連接點。 3.作用域是cflow(pointcut)切入點中重要的鑒別器。這個切入點將捕獲通過切入點參數捕獲的連接點的控制流程內的所有連接點。
值得更詳細研究cflow(Pointcut)做什么。這個特殊的切入點引入了連接點環境的概念。它是指每個連接點具有一個作用域,在這個用途域內,它被看成是執行程序的控制流程的一部分。 在這個控制流程內,任何遇到的連接點都會觸發cflow(Pointcut)切入點,并調用任何關聯的通知。當初始連接點觸發指定的切入點參數時,cflow(Pointcut)切入點會起作用,并觸發其關聯的通知。然后,將為在初始連接點環境內的控制流程中遇到的每個連接點調用與cflow(Pointcut)關聯的通知。最后,捕獲的連接點集合包括初始連接點本身,這就是這個切入點與cflowbelow(Pointcut)切入點之間的主要區別。
在cflow(Pointcut)的當前實現中,在使用它時,其實現方式會引入大量的系統開銷。在可能的地方,并且連接點重用不受影響時,可以考慮優先使用withincode(Signature)切入點。
二.捕獲程序控制流程內的所有連接點,不包括初始連接點 使用cflowbelow(Pointcut)切入點。cflowbelow(Pointcut)切入點的語法如下: pointcut <pointcut name>(<any values to be picked up>) : cflowbelow(<pointcut>);
這里和第一部分介紹的內容有點區別;其區別是實際捕獲的連接點數量。cflow(Pointcut)切入點會觸發在初始連接點環境內遇到的所有連接點(包括初始連接點)上的通知,而cflowbelow(Pointcut)切入點則不包括那個初始連接點。
posted on 2008-08-25 10:36 Brian 閱讀(421) 評論(0) 編輯 收藏 所屬分類: 《AspectJ Cookbook》讀書筆記