You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Spring Boot2.7.0后documentationPluginsBootstrapper启动失败求助

问题根因

Spring Boot 2.7.0默认将Spring MVC路径匹配实现从AntPathMatcher替换为PathPatternParser,项目中引入的Springfox 2.9.2未适配该变更,初始化documentationPluginsBootstrapper Bean时无法正确获取路径匹配处理器,触发空指针异常。当前配置的Spring Cloud 2021.0.3、CXF 3.4.3与Spring Boot 2.7.0本身不存在兼容性冲突,无需调整这两个组件的版本。

解决步骤
  • 调整路径匹配策略为Springfox兼容模式
    在项目配置文件中添加对应配置,切回Springfox支持的路径匹配实现:
    application.yml格式配置:
    spring:
      mvc:
        pathmatch:
          matching-strategy: ant_path_matcher
    
    application.properties格式配置:
    spring.mvc.pathmatch.matching-strategy=ant_path_matcher
    
  • 添加兼容配置类,修复Springfox Handler映射扫描缺陷
    仅修改路径匹配策略在Spring Cloud、CXF共存的场景下仍可能触发空指针,需要在项目中添加如下配置类,过滤掉Springfox无法识别的Handler映射实例:
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.util.ReflectionUtils;
    import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
    import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
    import java.lang.reflect.Field;
    import java.util.List;
    import java.util.stream.Collectors;
    
    @Configuration
    public class SpringfoxCompatibleConfig {
        @Bean
        public BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
            return new BeanPostProcessor() {
                @Override
                public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                    if (bean instanceof WebMvcRequestHandlerProvider) {
                        List<RequestMappingInfoHandlerMapping> handlerMappings = getHandlerMappings(bean);
                        List<RequestMappingInfoHandlerMapping> validMappings = handlerMappings.stream()
                                .filter(mapping -> mapping.getPatternParser() == null)
                                .collect(Collectors.toList());
                        handlerMappings.clear();
                        handlerMappings.addAll(validMappings);
                    }
                    return bean;
                }
    
                @SuppressWarnings("unchecked")
                private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
                    try {
                        Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
                        field.setAccessible(true);
                        return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
                    } catch (IllegalAccessException e) {
                        throw new IllegalStateException(e);
                    }
                }
            };
        }
    }
    
  • 长期适配方案(可选)
    Springfox 2.9.2已停止维护,无法适配Spring Boot 3.x及以上版本,如果后续有更高版本的Spring Boot升级计划,可以直接替换为持续维护的SpringDoc OpenAPI组件,无需额外编写兼容补丁。
验证方式

配置完成后重启应用,访问Swagger UI地址即可正常加载接口文档,documentationPluginsBootstrapper启动异常会完全消失。


内容的提问来源于stack exchange,提问作者Dibya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 23:36:35