加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:25:15 所属栏目:大数据 来源:网络整理
导读:我想为aspectj @Around方面指定一个包含多个包的模式. Example : package 1 : aaa.bbb.ccc.ddd package 2 : aaa.bbb.ccc.eee package 3 : aaa.bbb.ccc.eee.fff 我使用的模式: @Around("execution(* aaa.bbb.ccc.ddd.*.*(..)) execution(* aaa.bbb.ccc.eee..

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

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

我使用的模式:

@Around("execution(* aaa.bbb.ccc.ddd.*.*(..)) && execution(* aaa.bbb.ccc.eee..*.*(..))")
    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中是||.

@Pointcut("execution(* aaa.bbb.ccc.ddd.*.*(..))")
public void methodInDddPackage() {}

@Pointcut("execution(* aaa.bbb.ccc.eee.*.*(..))")
public void methodInEeePackage() {}

@Pointcut("methodInDddPackage() || methodInEeePackage()")
public void methodInDddOrEeePackage() {}

下面的等效内联表达式:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读