# Springfox 兼容性问题修复指南 ## 问题描述 Spring Boot 应用启动时出现以下错误: ``` Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null ``` ## 问题原因 - **Spring Boot 2.6+** 默认使用 `PathPatternMatcher` 替代 `AntPathMatcher` - **Springfox 3.0.0** 仍然依赖旧的 `AntPathMatcher`,导致兼容性问题 ## 解决方案 ### 方案1:配置兼容性(临时方案) 在 `application.yml` 中添加: ```yaml spring: mvc: pathmatch: matching-strategy: ant_path_matcher ``` ### 方案2:升级到 SpringDoc OpenAPI(推荐) #### 1. 更新 pom.xml 依赖 ```xml org.springdoc springdoc-openapi-ui 1.7.0 com.github.xiaoymin knife4j-openapi3-spring-boot-starter 4.3.0 ``` #### 2. 更新 SwaggerConfig.java ```java @Configuration public class SwaggerConfig { @Resource private ConfigProperties config; @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title(config.getSwaggerTitle()) .description(config.getSwaggerDescription()) .version(config.getSwaggerVersion()) .contact(new Contact() .name("科技小王子") .url("https://www.gxwebsoft.com") .email("170083662@qq.com"))) .components(new Components() .addSecuritySchemes("Authorization", new SecurityScheme() .type(SecurityScheme.Type.HTTP) .scheme("bearer") .bearerFormat("JWT"))) .addSecurityItem(new SecurityRequirement().addList("Authorization")); } } ``` #### 3. 重新编译项目 ```bash mvn clean package -DskipTests ``` #### 4. 运行应用 ```bash java -jar target/your-app.jar ``` ## 验证修复 1. 应用启动无错误 2. 访问 Swagger UI:`http://localhost:9200/swagger-ui.html` 3. 访问 API 文档:`http://localhost:9200/v3/api-docs` ## 注意事项 - SpringDoc OpenAPI 使用不同的注解和配置方式 - 可能需要更新 Controller 中的 Swagger 注解 - Knife4j 4.x 版本与 SpringDoc 兼容 ## 状态 ✅ 配置文件已修改 ✅ 依赖已更新 ✅ SwaggerConfig 已重写 ⏳ 需要重新编译项目以生效