是否有一个AspectJ切入点表达式搜索所有子包?

时间:2015-01-20 19:44:28

标签: java expression aop aspectj spring-aop

所以我对使用以下表达式声明的方法有一个方面:

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

这适用于包aaa.bbb.ccc中的所有类。但是,现在,我想要捕获aaa.bbb中的所有类,包括 aaa.bbb.ccc中的所有类。所以我试着将它备份到这里:

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

这只会从aaa.bbb获取类,并忽略来自aaa.bbb.ccc的类。有没有办法让表达式递归搜索所有子包?

1 个答案:

答案 0 :(得分:19)

知道了!文本的变化令人惊讶地微不足道。

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

......变成......

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

只需在包名和限定符之间添加额外的句点,即可参加比赛。

我做出改变后遇到的一个问题是,所有的Spring都爆炸了并且撞到了我身上。那是因为方面本身位于aaa.bbb的子包中。因此,如果您这样做,请确保使用!within子句来免除您的方面试图自行处理。