当存在 WebMvcConfigurationSupport 时,不会生成 Swagger UI

Swagger UI does not get generated when WebMvcConfigurationSupport is present

我正在尝试在我的 spring 引导项目中生成 Swagger UI。生成了 JSON API 文档,但是 Swagger UI 没有,至少当我输入 swagger ui 地址时我得到了 404。 我的依赖项:

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

但是,当我删除此配置时(并且什么都不做):

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {

    @Override
    protected void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new SomeEnumConverter());
        registry.addConverter(new AnotherEnumConverter());
    }
}

Swagger UI 有效。 Swagger UI 是否存在转换器问题?是否有解决该问题的方法?

您需要添加@EnableWebMvc注解

@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {

  @Override
  protected void addFormatters(FormatterRegistry registry) {
    registry.addConverter(new SomeEnumConverter());
    registry.addConverter(new AnotherEnumConverter());
  }
}

但我认为现在配置 WebMvc 的官方方法是实现 WebMvcConfigurer。您可以在 official docs 中看到几个示例。我认为如果你使用 Spring Boot.

它不需要 @EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {

  @Override
  protected void addFormatters(FormatterRegistry registry) {
    registry.addConverter(new SomeEnumConverter());
    registry.addConverter(new AnotherEnumConverter());
  }
}