关闭页面特效

nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting 'name pattern' at character position 65 错误解析

1|0简介


在尝试使用apo做注解的时候,遇到了这个问题

错误代码如下

@Pointcut("execution(* com.example.demo.controller.*.*(..))" ) private void pointcut2() {} @Around(value = "pointcut2()") public void processAuthority(ProceedingJoinPoint call,MyAnnotation around) throws Throwable { System.out.println("ANNOTATION welcome"); // System.out.println("ANNOTATION 调用方法:"+ around.methodName()); System.out.println("ANNOTATION 调用类:" + call.getSignature().getDeclaringTypeName()); System.out.println("ANNOTATION 调用类名" + call.getSignature().getDeclaringType().getSimpleName()); MethodSignature methodSignature = (MethodSignature) call.getSignature(); Method method = methodSignature.getMethod(); MyAnnotation myAnnotation=method.getAnnotation(MyAnnotation.class); String name=myAnnotation.methodName(); System.out.println(name);

如果将processAuthority方法中的MyAnnotation around入参去掉,那么将不会出错,这是为什么呢?

2|0解析


花了一下午,终于找到了原因,入参不匹配,因为采用了@Around方法,同时指定了连接点是pointcut2()方法匹配的连接点

但是该发方法默认是入参一个ProceedingJoinPoint ,而我们多了一个入参around,此时pointcut2()没有对应的入参,应该修改为

@Pointcut("execution(* com.example.demo.controller.*.*(..)) && args(around)", argNames = "around" ) private void pointcut2(MyAnnotation around) {}

此时再去用这个连接点匹配,就可以通过了。也就是你@Around处理方法,用到了@PointCut匹配连接点,只要多一个参数,就需要在连接点
多写一个入参,这样才会匹配到。

3|0总结


将方法参数绑定到切面上, 那么也应该在切面入口添加对应参数与匹配

4|0参考


https://stackoverflow.com/questions/3832361/spring-3-0-aop-pointcut-is-not-well-formed-expecting-name-pattern-error


__EOF__

作  者HKnight
出  处https://www.cnblogs.com/HKnight/p/16721902.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   HKnight  阅读(310)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示