SpringFox 3.0.0调用v3/api-docs时出现运行时错误求助
解决Spring Boot 2.7.4 + SpringFox 3.0.0 v3/api-docs空指针问题
问题根源
SpringFox 3.0.0对OpenAPI 3(对应/v3/api-docs接口)的适配存在兼容性问题,尤其是与Spring Boot 2.7.x默认启用的新路径匹配策略冲突,导致处理v3文档生成时触发空指针异常。
解决步骤
1. 调整Spring MVC路径匹配策略
Spring Boot 2.6+默认使用PATH_PATTERN_PARSER路径匹配器,但SpringFox 3.0.0未完全适配该策略,需改回旧版的ANT_PATH_MATCHER:
- 在
application.properties中添加:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
- 或在
application.yml中添加:
spring: mvc: pathmatch: matching-strategy: ant_path_matcher
2. 修正Docket Bean配置
确保同时配置支持OpenAPI 3和Swagger 2的Docket实例,避免仅配置SWAGGER_2导致v3接口无对应处理逻辑:
@Configuration public class SwaggerConfig { // 配置OpenAPI 3.0对应的Docket @Bean public Docket openApi() { return new Docket(DocumentationType.OAS_30) .select() .apis(RequestHandlerSelectors.basePackage("com.your.package.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } // 保留Swagger 2对应的Docket(如需继续使用/v2/api-docs) @Bean public Docket swagger2() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.your.package.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API文档") .version("1.0") .build(); } }
3. 检查并清理依赖
确保Maven依赖仅包含SpringFox 3.0.0的官方starter,避免与旧版依赖冲突:
<dependencies> <!-- SpringFox 3.0.0核心依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <!-- Swagger UI依赖 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0</version> </dependency> </dependencies>
注意:移除旧版的springfox-swagger2依赖,防止版本冲突。
4. 重启应用验证
完成上述配置后重启应用,访问http://localhost:8080/v3/api-docs即可正常获取OpenAPI 3格式的文档。
内容的提问来源于stack exchange,提问作者Prem
相关产品推荐
相关产品推荐

