2012-12-05 37 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

对,对不起。当你的问题出现时,细节往往被忽略,你忘记了自己的假设,而其他人可能不会这样做! –

相关问题