2012-12-05 35 views
2

我對涉及Aspectj的問題感到困惑。我正在尋找的是使用方法級註釋進行註釋的「after()throwing」匹配。Aspectj匹配切入點,但不關心方法級別的註釋參數

@MyAnnotation  
public void doSomething(Param p1, Param p2) 

如果我使用

after() throwing(MyCustomException ex) : call (@com.me.MyAnnotation * *.*(..)) 

它的工作原理,但如果我有一些參數添加到我的註釋,然後他們沒有得到匹配。

@MyAnnotation(value = "doobery")  
public void doSomething(Param p1, Param p2) 

我從切入點中遺漏了什麼?

只是爲了澄清,我想匹配這兩個例子,我不關心註釋中的參數。

AspectJ 1.6的版本

+0

什麼版本的AspectJ您使用的是? –

+0

好點 - 1.6 –

+0

完整的版本會更有幫助:-)在最近的版本中,有一些關於註解參數的工作,所以它可能會產生影響,因爲它應該按照您編寫它的方式工作。如果你在這裏沒有得到答案,你肯定會在aspect-users郵件列表中得到一個答案。 –

回答

2

哈!得到它了。

所以線索看到了編織的痕跡。我可以看到一些方法得到編織,而其他方法則不能。但是,我突破的方法是重複編織方法。

我正在使用「調用」 - 因此,編織只發生在方法的調用上,所以當我有一個類被多次調用匹配方法編織時,它們會多次出現。

我需要切換到「執行」,以便在方法上發生編織,即使它們沒有被調用。

Chaned我建議:

after() throwing(MyCustomException ex) : execution (@com.me.MyAnnotation * *(..)) 
+1

對,我應該問一下「它的工作原理」是什麼意思。 –

+0

對,對不起。當你的問題出現時,細節往往被忽略,你忘記了自己的假設,而其他人可能不會這樣做! –

相關問題