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

AspectJ:切入点中的参数

发布时间:2020-12-14 23:36:14 所属栏目:Java 来源:网络整理
导读:我正在使用AspectJ来建议所有具有所选类参数的公共方法.我尝试了以下方法: pointcut permissionCheckMethods(Session sess) : (execution(public * *(..,Session)) args(*,sess)); 这对于具有至少2个参数的方法非常有用: public void delete(Object item,S
我正在使用AspectJ来建议所有具有所选类参数的公共方法.我尝试了以下方法:
pointcut permissionCheckMethods(Session sess) : 
    (execution(public * *(..,Session)) && args(*,sess));

这对于具有至少2个参数的方法非常有用:

public void delete(Object item,Session currentSession);

但它不适用于以下方法:

public List listAll(Session currentSession);

我怎样才能改变我的切入点来建议两种方法执行?换句话说:我希望“..”通配符代表“零个或多个参数”,但看起来它意味着“一个或多个”……

解决方法

哦,好吧……我用这个讨厌的伎俩解决了这个问题.还在等待有人出现“官方”切入点定义.
pointcut permissionCheckMethods(EhealthSession eheSess) : 
    (execution(public * *(..,EhealthSession)) && args(*,eheSess))
    && !within(it.___.security.PermissionsCheck);

pointcut permissionCheckMethods2(EhealthSession eheSess) : 
    (execution(public * *(EhealthSession)) && args(eheSess))
    && !within(it.___.security.PermissionsCheck)
    && !within(it.___.app.impl.EhealthApplicationImpl);

before(EhealthSession eheSess) throws AuthorizationException : permissionCheckMethods(eheSess)
{
    Signature sig = thisJoinPointStaticPart.getSignature(); 
    check(eheSess,sig);
}

before(EhealthSession eheSess) throws AuthorizationException : permissionCheckMethods2(eheSess)
{
    Signature sig = thisJoinPointStaticPart.getSignature(); 
    check(eheSess,sig);
}

(编辑:李大同)

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

    推荐文章
      热点阅读