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

Spring Boot使用@EnableSwagger2注解启动失败求助

Spring Boot 3 集成Swagger2启动失败问题

我是Spring框架初学者,使用@EnableSwagger2注解时应用启动失败。

我的Config类代码

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
@RequiredArgsConstructor
public class Config {
    
    private final ObjectMapper objectMapper;

    void customizeObjectMapper() {
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    }
}

报错信息

ApplicationContext启动失败。如需查看条件评估报告,请启用'debug'模式重新运行应用。
2023-09-28T21:12:11.549+02:00 ERROR 25124 --- [main] o.s.boot.SpringApplication : 应用启动失败

org.springframework.context.ApplicationContextException: 无法启动bean 'documentationPluginsBootstrapper'
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182) ~[spring-context-6.0.12.jar:6.0.12]
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:357) ~[spring-context-6.0.12.jar:6.0.12]
at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:156) ~[spring-context-6.0.12.jar:6.0.12]
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:124) ~[spring-context-6.0.12.jar:6.0.12]
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:958) ~[spring-context-6.0.12.jar:6.0.12]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:611) ~[spring-context-6.0.12.jar:6.0.12]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.4.jar:3.1.4]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) ~[spring-boot-3.1.4.jar:3.1.4]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.1.4.jar:3.1.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-3.1.4.jar:3.1.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309) ~[spring-boot-3.1.4.jar:3.1.4]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298) ~[spring-boot-3.1.4.jar:3.1.4]
at com.example.spring_learn_with_yt_1.SpringLearnWithYt1Application.main(SpringLearnWithYt1Application.java:10) ~[classes/:na]
Caused by: java.lang.NullPointerException: 无法调用"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()",因为"this.condition"为null
at springfox.documentation.spring.web.WebMvcPatternsRequestConditionWrapper.getPatterns(WebMvcPatternsRequestConditionWrapper.java:56) ~[springfox-spring-webmvc-3.0.0.jar:3.0.0]
at springfox.documentation.RequestHandler.sortedPaths(RequestHandler.java:113) ~[springfox-core-3.0.0.jar:3.0.0]
at springfox.documentation.spi.service.contexts.Orderings.lambda$byPatternsCondition$3(Orderings.java:89) ~[springfox-spi-3.0.0.jar:3.0.0]

问题原因及解决办法

原因

你使用的Spring Boot 3.1.4与Swagger2(springfox 3.0.0)不兼容。Spring Boot 3基于Spring 6,而springfox 3.0.0最高仅支持Spring Boot 2.7.x,两者的Web MVC组件接口、Servlet API存在差异,直接集成会触发空指针异常。

解决步骤

  1. 替换Swagger依赖:弃用springfox,改用支持Spring Boot 3的springdoc-openapi-starter-webmvc-ui,这是当前官方推荐的API文档方案。

    • Maven依赖替换为:
      <dependency>
          <groupId>org.springdoc</groupId>
          <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
          <version>2.2.0</version>
      </dependency>
      
    • Gradle依赖替换为:
      implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0'
      
  2. 移除@EnableSwagger2注解:springdoc无需该注解,直接删除Config类上的@EnableSwagger2。

  3. 修复ObjectMapper配置:原customizeObjectMapper方法未被Spring调用,需添加@PostConstruct注解确保初始化时执行:

    import com.fasterxml.jackson.annotation.JsonInclude;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import lombok.RequiredArgsConstructor;
    import org.springframework.context.annotation.Configuration;
    import javax.annotation.PostConstruct;
    
    @Configuration
    @RequiredArgsConstructor
    public class Config {
        
        private final ObjectMapper objectMapper;
    
        @PostConstruct
        void customizeObjectMapper() {
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        }
    }
    
  4. 验证启动:应用启动后,访问http://localhost:8080/swagger-ui.html即可查看API文档页面。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:11:00