如何创建仅匹配无参数方法的Pointcut?
如何用AspectJ切点精准匹配无参数方法?
- 需求:只想匹配无参数的方法,不想用范围过大的
@PointCut("execution(* * (..))") - 临时方案:尝试
execution(* * ())没触发,只能通过检查JoinPoint.getArgs().length == 0来判断参数个数
正确的切点表达式
execution(* * ())是完全有效的无参数方法匹配表达式,它可以精准匹配所有无参数的方法。
踩坑复盘
后来排查发现表达式本身没问题,是场景中的其他问题导致看似没触发:
我的场景是请求处理器调用第三方类的两个方法(一个无参数、一个带参数),想仅增强无参数的那个,但忽略了切点同时匹配到了请求处理器自身的方法(该方法参数个数和第三方类的某方法一致);而第三方类的方法完全没被匹配,则是另一个独立问题(比如第三方类未被Spring代理、不在切面扫描范围内等)。
内容的提问来源于stack exchange,提问作者Eisenknurr
相关产品推荐
相关产品推荐

