gpt4 book ai didi

Spring Boot & Swagger 2 UI & 自定义 requestmappinghandlermapping - 映射问题

转载 作者:行者123 更新时间:2023-12-03 23:23:10 25 4
gpt4 key购买 nike

我有自己的 RequestMappingHandlerMapping 并且我正在使用 springfox-swagger-ui。添加自定义映射后,我无法在 http://localhost:8080/swagger-ui.html 处实现 swagger ui .
有任何想法吗?

这是我的配置。

    @Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
@Bean
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
return new ApiVersionRequestMappingHandlerMapping("v");
}

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

这是我的 pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>

最佳答案

当您覆盖 WebMvcConfigurationSupport 时,您也覆盖了 spring Boot 的 mvc 自动配置(WebMvcAutoConfiguration)。因此,需要 spring boot 配置的资源将不起作用。这不是 swagger 特有的问题。

您可以在此处找到有关此的更多信息:

https://github.com/spring-projects/spring-boot/issues/5004

正如 github 问题所暗示的那样,将来会对此进行更改以使其更容易。目前有一些解决方法,正如那里所建议的那样。

一种快速而肮脏的方法是将 WebMvcAutoConfiguration 类复制并粘贴到您自己的类中,从 EnableWebMvcConfiguration 的 requestMappingHandlerMapping() 方法返回您自己的 HandlerMapping 并将 WebMvcAutoConfiguration 的副本注册为自动配置类。您可以在此处查看说明:

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html

确保将 WebMvcAutoConfiguration 的副本放在某个未自动扫描和拾取组件的包中。它应该只是按照上述链接中的说明进行注册。

还要确保在从 requestMappingHandlerMapping() 方法返回之前将自定义 HandlerMapping 的顺序设置为 0,如下所示:

@Bean
@Primary
@Override
public RequestMappingHandlerMapping requestMappingHandlerMapping() {
// Must be @Primary for MvcUriComponentsBuilder to work

ApiVersionRequestMappingHandlerMapping handlerMapping = new ApiVersionRequestMappingHandlerMapping("v");
handlerMapping.setOrder(0);
handlerMapping.setInterceptors(getInterceptors());
handlerMapping.setContentNegotiationManager(mvcContentNegotiationManager());

PathMatchConfigurer configurer = getPathMatchConfigurer();
if (configurer.isUseSuffixPatternMatch() != null) {
handlerMapping.setUseSuffixPatternMatch(configurer.isUseSuffixPatternMatch());
}
if (configurer.isUseRegisteredSuffixPatternMatch() != null) {
handlerMapping.setUseRegisteredSuffixPatternMatch(configurer.isUseRegisteredSuffixPatternMatch());
}
if (configurer.isUseTrailingSlashMatch() != null) {
handlerMapping.setUseTrailingSlashMatch(configurer.isUseTrailingSlashMatch());
}
if (configurer.getPathMatcher() != null) {
handlerMapping.setPathMatcher(configurer.getPathMatcher());
}
if (configurer.getUrlPathHelper() != null) {
handlerMapping.setUrlPathHelper(configurer.getUrlPathHelper());
}

return handlerMapping;
}

关于Spring Boot & Swagger 2 UI & 自定义 requestmappinghandlermapping - 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36744678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com