带定制转换器的Spring Boot打破了Swagger&如何移动它

时间:2016-06-24 18:37:38

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

我有一个非常简单的Spring Boot应用程序。我通过基本的SpringApplication.run(Startup.class, args);启动它,并在那里有一个自定义@Configuration类来覆盖默认转换器。我决定将Swagger添加到各种组合中,以便为内部用户群生成更好的文档,因为有大量的端点。

当我开始做事时,Swagger根本行不通。

我决定用一个端点启动一个前端临时Spring Boot,以便记录出错的地方。 开箱即用,完美无缺,只需按下http://localhost:8080/swagger-ui.html基本网址即可让Swagger正常运行。

当我实施扩展@Configuration的自定义WebMvcConfigurationSupport课程时,Swagger不再有效。

我的配置覆盖了单个方法:

@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(getJsonConverter());
  }
}

就是这样。我决定添加默认转换器,没有任何运气。然后我只是把课程清空并把它留作:

@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {
}

Swagger仍然被打破 - 如果我完全删除课程,那么它就可以了。

如何保留自定义配置数据并运行Swagger?我也希望将它移动到http://localhost:8080/swagger/而不是它使用的默认文件,但现在这是一个完全独立的问题。

我推出的Swagger看起来像这样:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

  @Bean
  public Docket getDocket() {
    // ...
    return new Docket(DocumentationType.SWAGGER_2)
      .groupName("Core API")
      .apiInfo(infoBuilder.build())
      .select().paths(PathSelectors.regex("/*"))
      .build();
  }
}

1 个答案:

答案 0 :(得分:3)

覆盖默认资源处理程序对我有用。我将以下内容添加到扩展WebMvcConfigurationSupport的配置类中:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
            .addResourceHandler("swagger-ui.html")
            .addResourceLocations("classpath:/META-INF/resources/");
    registry
            .addResourceHandler("/webjars/**")
            .addResourceLocations("classpath:/META-INF/resources/webjars/");
}