2015-01-20 71 views
6

所以我有一個方面與下面的表達式聲明的方法:是否有一個AspectJ切入點表達式可以搜索所有的子包?

@Before("execution(* aaa.bbb.ccc.*.*(..))") 

這完全適用於所有類型的包aaa.bbb.ccc。但是現在,我想捕捉aaa.bbb所有類,包括那些aaa.bbb.ccc。所以,我想在備份到這裏:

@Before("execution(* aaa.bbb.*.*(..))") 

這隻能從aaa.bbb抓起類,不過,從aaa.bbb.ccc忽略類。有沒有一種方法可以使表達式搜索所有子包的遞歸?

回答

14

Got it!文本變化是驚人的微不足道的。

@Before("execution(* aaa.bbb.*.*(..))") 

... ...變得

@Before("execution(* aaa.bbb..*.*(..))") 

只需添加額外期間包名和限定符之間,而你去比賽。我在進行更改之後遇到

的一個問題是,所有的Spring的炸燬,並墜毀在我身上。這是因爲方面本身aaa.bbb的分包中。所以,如果你這樣做,確保你使用!within條款來免除你的方面嘗試處理自己。

+3

這是文檔中涵蓋的基本內容。無論如何,很高興你自己找到了它。你可以通過省略一個點和一個星號來優化它:'執行(* aaa.bbb .. *(..))' – kriegaex 2015-01-20 22:34:22

+0

@kriegaex你能指點我的文檔嗎?我在谷歌搜索了很長一段時間,然後才問到這裏。 – asteri 2015-01-20 22:39:55

+1

查看[編程指南](http://eclipse.org/aspectj/doc/released/progguide/printable.html#d0e5901)中的「類型名稱模式」。 – kriegaex 2015-01-21 12:27:52

相關問題