Spring 使用自定义转换器启动会破坏 Swagger 以及如何移动它
Spring Boot with Custom Converters breaks Swagger & how to move it
我有一个非常简单的 Spring 启动应用程序。我通过基本 SpringApplication.run(Startup.class, args);
启动它,并在其中有一个自定义 @Configuration
class 覆盖默认转换器。我决定将 Swagger 添加到组合中,以便我可以为我们的内部用户群生成更好的文档,因为有很多端点。
当我开始工作时,Swagger 根本无法工作。
我决定从头开始 Spring 仅使用一个端点进行引导以记录以查看出现了什么问题。 开箱即用,效果非常好,我只需点击 http://localhost:8080/swagger-ui.html 基础 URL,就能获得 Swagger 运行ning。 =21=]
当我实现扩展 WebMvcConfigurationSupport
的自定义 @Configuration
class 时,Swagger 不再有效。
我的配置覆盖了一个方法:
@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(getJsonConverter());
}
}
就是这样。我决定在没有任何运气的情况下也添加默认转换器。然后我只是清空 class 并将其保留为:
@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {
}
Swagger 仍然损坏 - 如果我完全删除 class,那么它就可以工作了。
如何保留我的自定义配置数据和 运行 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();
}
}
覆盖默认资源处理程序对我有用。我在扩展 WebMvcConfigurationSupport 的配置 class 中添加了以下内容:
@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/");
}
我有一个非常简单的 Spring 启动应用程序。我通过基本 SpringApplication.run(Startup.class, args);
启动它,并在其中有一个自定义 @Configuration
class 覆盖默认转换器。我决定将 Swagger 添加到组合中,以便我可以为我们的内部用户群生成更好的文档,因为有很多端点。
当我开始工作时,Swagger 根本无法工作。
我决定从头开始 Spring 仅使用一个端点进行引导以记录以查看出现了什么问题。 开箱即用,效果非常好,我只需点击 http://localhost:8080/swagger-ui.html 基础 URL,就能获得 Swagger 运行ning。 =21=]
当我实现扩展 WebMvcConfigurationSupport
的自定义 @Configuration
class 时,Swagger 不再有效。
我的配置覆盖了一个方法:
@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(getJsonConverter());
}
}
就是这样。我决定在没有任何运气的情况下也添加默认转换器。然后我只是清空 class 并将其保留为:
@Configuration
public class StartupConfiguration extends WebMvcConfigurationSupport {
}
Swagger 仍然损坏 - 如果我完全删除 class,那么它就可以工作了。
如何保留我的自定义配置数据和 运行 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();
}
}
覆盖默认资源处理程序对我有用。我在扩展 WebMvcConfigurationSupport 的配置 class 中添加了以下内容:
@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/");
}