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

添加Actuator依赖后Spring Boot Rest API启动失败,触发Swagger空指针异常

问题分析

这个问题的核心是旧版Springfox(2.9.2)与Spring Boot 2.6+版本不兼容,添加Actuator依赖后,Swagger在扫描并排序请求处理器时,遇到了Actuator端点的处理类,触发了空指针异常(NPE)。

从错误栈可以看到,NPE发生在springfox.documentation.spi.service.contexts.Orderings$8.compare方法中,说明Swagger在对请求处理器排序时,某个处理器的handlerMethod为null——而Actuator引入的端点处理器恰好符合这个情况,导致排序失败。

解决方案

方案1:升级Springfox到兼容版本

Springfox 3.0.0及以上版本已经适配了Spring Boot 2.6+的特性,包括路径匹配规则和web组件的变化。修改pom.xml中的Swagger依赖:

<!-- 替换旧的swagger2和swagger-ui依赖 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<!-- 移除单独的swagger2、swagger-ui依赖 -->

同时可以简化Swagger配置类,Springfox Boot Starter会自动配置大部分内容,若需自定义规则可保留原有配置逻辑。

方案2:排除Actuator端点被Swagger扫描

如果不想升级Springfox,可以在Swagger的Docket配置中排除Actuator的路径,避免Swagger扫描到Actuator的请求处理器:
在SwaggerConfig.java中修改Docket配置:

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.playground")) // 仅扫描业务代码包
            .paths(PathSelectors.regex("/(?!actuator).*")) // 排除所有actuator路径
            .build()
            .apiInfo(apiInfo());
}

这样Swagger只会扫描业务端点,不会处理Actuator的请求处理器,避免触发NPE。

方案3:调整请求处理器过滤逻辑

如果坚持使用旧版Springfox,还可以通过自定义Bean过滤掉不兼容的请求处理器:

@Bean
public WebMvcRequestHandlerProvider webMvcRequestHandlerProvider(ApplicationContext applicationContext) {
    List<RequestMappingHandlerMapping> handlerMappings = applicationContext.getBeansOfType(RequestMappingHandlerMapping.class).values().stream()
            .filter(mapping -> mapping.getPatternParser() == null)
            .collect(Collectors.toList());
    return new WebMvcRequestHandlerProvider(handlerMappings);
}

这个Bean会过滤掉使用PatternParser的请求处理器(Actuator端点可能使用该规则),只保留使用AntPathMatcher的处理器,避免Swagger处理到不兼容的请求处理器。

验证

选择任意一种方案后,重新添加Actuator依赖并启动应用,即可实现Swagger与Actuator的正常共存。

内容的提问来源于stack exchange,提问作者Syed Noman Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:55:54