【pig-cloud项目】关于从RequestMappingHandlerMapping的RequestMappingInfo里面getPatterns()报错问题。是路径匹配规则的锅!

发布于:2022-10-29 ⋅ 阅读:(805) ⋅ 点赞:(0)

目录

解决方案:

解决思路:


解决方案:

在配置文件里面加上:

# Spring 相关
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

解决思路:

当我按照 pig 项目的逻辑,手写到微服务内部调用不鉴权逻辑的时候,运行程序发现报错了,一看是PermitAllUrlProperties里面获取路径的错误,我不理解为啥报错,通过打断点发现自己的项目里面请求路径条件确实是 null ,但是请求路径条件有两个!

一个是 PathPatternsRequestCondition,一个是 PatternsRequestCondition 

 

于是我开始想,pig项目里面一定配置了啥是我不知道的,所以才导致这个原因,毕竟我俩依赖的包都是一样的呀;

然后在官网上搜索这两个类,他给的翻译是:

 于是我看到两个词 AntPathMatcher PathPatterns ,通过这两个词的名字,能够推断出这个是路径匹配需要的,并且这个是属于 mvc 范畴的,于是就在度娘上搜索:springmvc controller 路径匹配 AntPathMatcher PathMatcher ,于是就看到了这样一篇文章:SpringMVC路径匹配规则AntPathMatcher - 小奔的早晨 - 博客园

看到里面说路径匹配规则,于是又去搜索:SpringMVC的路径匹配规则,搜索到:整合SpringMVC之路径匹配规则_Ricky的技术小站的博客-CSDN博客_springmvc 路径匹配

在这个里面发现有配置路径匹配规则的配置项,于是我就起 pig 项目的nacos 配置文件里面找,找到了:

# Spring 相关
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 重点就在这里!

在2.6.0 之前,默认是ant_path_matcher解析方式。

在2.6.0 之后,默认是path_pattern_parser解析方式。

而pig 项目设置了使用ant_path_matcher模式,而我用的是默认的!!!

解决方法找到了,可是还有个疑问就是这俩过滤器有啥区别呢?

ant_path_matcher
通配符可以在中间,如:abc/**/xyz。

path_pattern_parser
通配符只能定义在尾部,如:abc/xyz/**。
可以使用{*path}接收多级路由。path可以随意取名,与@PathVariable名称对应即可。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到