java – 用于指定多个包的Aspectj方面

前端之家收集整理的这篇文章主要介绍了java – 用于指定多个包的Aspectj方面前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想为aspectj @Around方面指定一个包含多个包的模式.

  1. Example : package 1 : aaa.bbb.ccc.ddd
  2. package 2 : aaa.bbb.ccc.eee
  3. package 3 : aaa.bbb.ccc.eee.fff

我使用的模式:

  1. @Around("execution(* aaa.bbb.ccc.ddd.*.*(..)) && execution(* aaa.bbb.ccc.eee..*.*(..))")
  2. i.e Intercept packages aaa.bbb.ccc.ddd,aaa.bbb.ccc.eee and any sub-package of aaa.bbb.ccc.eee

但这种模式似乎不起作用.虽然指定了一个没有&&的单一模式条件有效.

有人可以说这个模式有什么问题吗?

谢谢,
Gayathri

最佳答案
&安培;&安培;代表逻辑AND.你需要的是一个逻辑OR,在AspectJ中是||.

  1. @Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..))")
  2. public void methodInDddPackage() {}
  3. @Pointcut("execution(* aaa.bbb.ccc.eee.*.*(..))")
  4. public void methodInEeePackage() {}
  5. @Pointcut("methodInDddPackage() || methodInEeePackage()")
  6. public void methodInDddOrEeePackage() {}

下面的等效内联表达式:

  1. @Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..)) || execution(* aaa.bbb.ccc.eee.*.*(..))")
  2. public void methodInDddOrEeePackageInline() {}

有关详细信息,请参见此Spring AOP documentation页面.

猜你在找的Spring相关文章