【问题标题】:Swagger 2 Issue spring BootSwagger 2 问题春季启动
【发布时间】:2021-12-30 18:13:17
【问题描述】:

我在 Spring Boot 中遇到了 Swagger 集成的问题。看看代码和错误sn-p。

------------------POM--------------------

<properties>
    <java.version>1.8</java.version>
    <swagger.version>2.9.2</swagger.version>
</properties>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${swagger.version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${swagger.version}</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-bean-validators</artifactId>
    <version>${swagger.version}</version>
</dependency>

-----------------App类--------------

@SpringBootApplication
@EnableSwagger2
public class ProducerApplication {

  public static void main(String[] args) {
    SpringApplication.run(ServletPocProducerApplication.class, args);
  }
  
  @Bean 
  public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2)
      .select() 
      .apis(RequestHandlerSelectors.any())
      .paths(PathSelectors.any())
      .build();
  }
}

堆栈跟踪

org.springframework.context.ApplicationContextException: Failed to start bean 
'documentationPluginsBootstrapper'; nested exception is 
 java.lang.NullPointerException: Cannot invoke 
"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.toString()" 
because the return value of 
"springfox.documentation.spi.service.contexts.Orderings.patternsCondition(springfox.docume 
ntation.RequestHandler)" is null
   at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:181) ~[spring-context-5.3.13.jar:5.3.13]

我该如何解决这个问题??

【问题讨论】:

标签: java spring-boot swagger-ui swagger-2.0


【解决方案1】:

我的建议是,当您使用 spring-boot 时,最好使用 spring boot 依赖项。所以,spring-boot 会处理你的默认设置。

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>...</version>
</dependency>

【讨论】:

    【解决方案2】:

    我通过在 application.properties 中添加“spring.mvc.pathmatch.matching-strategy=ant-path-matcher”解决了这个问题。

    【讨论】:

      【解决方案3】:

      对于spring-boot和swagger-ui的集成,将库添加到你的项目依赖列表中(无需额外配置):

           <dependency>
                <groupId>org.springdoc</groupId>
                <artifactId>springdoc-openapi-ui</artifactId>
                <version>1.5.12</version>
           </dependency>
      
      • Swagger UI 页面随后将在 http://server:port/context-path/swagger-ui.html 和 OpenAPI 描述将在以下 url 获得 json 格式: http://server:port/context-path/v3/api-docs

      • server:服务器名称或IP

      • port:服务器端口

      • context-path:应用的上下文路径

      【讨论】:

        【解决方案4】:

        我知道这并不能直接解决您的问题,但请考虑转至 springdoc。 Springfox 在这一点上是如此的错误,以至于使用起来很痛苦。由于 Spring WebFlux 支持,我在 2 年前搬到了 springdoc,对此我感到非常高兴。此外,它还支持 Kotlin Coroutines,我不确定 Springfox 是否支持。

        如果您决定迁移,springdoc 甚至还有一个migration guide

        【讨论】:

          猜你喜欢
          • 2020-10-23
          • 1970-01-01
          • 2014-01-09
          • 1970-01-01
          • 2020-07-02
          • 2018-01-23
          • 2021-08-10
          • 1970-01-01
          • 2017-12-08
          相关资源
          最近更新 更多