Spring Boot Swagger自定义API信息不生效问题求助
排查Swagger自定义API信息不生效的问题
看了你的配置和问题描述,我来帮你梳理几个大概率导致自定义信息不生效的原因和解决办法:
1. 路径匹配规则写得不对
你的代码里用了 .paths(regex("/api.spacestudy.com")),这个正则表达式有问题:
- 它只会精确匹配路径完全等于
/api.spacestudy.com的接口,但你的实际API路径肯定不是这个格式(比如应该是/api/xxx这类带前缀的接口)。 - 修正方法:改成匹配你的实际API路径前缀,比如如果所有接口都以
/api/开头,就改成:
如果想匹配所有接口,也可以直接用.paths(regex("/api.*"))PathSelectors.any()。
2. 配置类存在语法错误
在 metaData() 方法里,Contact的邮箱参数没加双引号:
Contact contact = new Contact("XYZ", "XYZ.com", XYZ@gmail.com);
这里的 XYZ@gmail.com 是字符串,必须用双引号包裹,否则会编译报错,导致整个Swagger配置类无法生效,系统只能用默认的API信息。修正后应该是:
Contact contact = new Contact("XYZ", "XYZ.com", "XYZ@gmail.com");
3. 浏览器缓存拖了后腿
Swagger UI有时候会缓存旧的API文档,哪怕你改了配置,页面还是显示旧内容。解决办法很简单:
- 按
Ctrl+F5强制刷新页面 - 或者直接清除浏览器缓存后重新访问
http://localhost:8086/swagger-ui.html
4. 配置类没被Spring扫描到
检查你的Spring Boot主启动类所在的包:如果主启动类在 com.spacestudy 根包下,那 com.spacestudy.config 会被自动扫描;如果主启动类在更深的子包(比如 com.spacestudy.app),那得在主启动类上添加 @ComponentScan(basePackages = {"com.spacestudy.config", "com.spacestudy.controller"}),明确指定要扫描配置类所在的包。
5. 依赖版本兼容性问题
你用的是Springfox 2.7.0版本,这个版本比较老,如果你的Spring Boot是2.x版本,可能存在适配问题。如果上面的方法都没用,可以尝试升级到兼容性更好的2.9.2版本,修改依赖:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> <scope>compile</scope> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> <scope>compile</scope> </dependency>
按照上面的步骤逐一排查,应该就能解决自定义信息不生效的问题了。
内容的提问来源于stack exchange,提问作者SpringUser
相关产品推荐
相关产品推荐

