问题描述:之前有同事搭完了项目,里面包含knife4j作为接口文档,今天要重新加一个微服,所以我就按老项目的方式搭了一个微服,但是当微服启动后死活不显示我的controller文档,下面是我的解决过程。
1、检查swagger的package是否正确,检查了一遍对的,其他配置跟老系统都一致,确认应该没问题
2、检查是否是少添加了哪个注解,我是从老项目copy过来的代码不应该少了哪个注释
3、F12看swagger有没有哪里报错,有部分链接401,于是后端将链接加入白名单,再试,问题依旧
4、检查一圈下来没发现哪里有问题,于是只能来个简单粗暴的方法,copy一份老项目,不改变任何代码以及配置后启动,swagger正常显示了,可以确定这个是好的,换回我新项目的配置试下,启动后发现无法显示文档,问题确定了,是配置的问题,那是哪里的问题呢?核对新旧项目的配置文件,发现有个配置新项目没有
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
加上以上配置,文档终于可以正常显示了。
5、思考:为啥要加这个配置了,网上找了下答案:由于Springfox使用的路径匹配是基于AntPathMatcher,而Spring Boot 2.6.X使用的是PathPatternMatcher,所以将MVC的路径匹配规则改成 AntPathMatcher,我的springboot是2.7,出现这个问题就不足为奇了