Java 斯威格路线返回404在弹簧靴上+;运动衫

Java 斯威格路线返回404在弹簧靴上+;运动衫,java,spring,spring-boot,jersey,swagger,Java,Spring,Spring Boot,Jersey,Swagger,我正试图将Swagger添加到现有的spring引导应用程序中,如本教程所述 我的主要应用课程如下: @SpringBootApplication @EnableAutoConfiguration public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 招摇过市配置为: @Conf

我正试图将Swagger添加到现有的spring引导应用程序中,如本教程所述

我的主要应用课程如下:

@SpringBootApplication
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
招摇过市配置为:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)
       .select()
        .apis(RequestHandlerSelectors.any())
        .paths(PathSelectors.any())
        .build();                                           
    }
}
我可以在启动日志中看到Spring显然识别了Swagger及其路线:

s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/v2/api-docs],methods=[GET],produces=[application/json || application/hal+json]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/configuration/ui]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/configuration/security]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()
s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/swagger-resources]}" onto org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
s.w.s.m.m.a.RequestMappingHandlerMapping:Mapped“{[/v2/api docs],methods=[GET],products=[application/json | | | application/hal+json]}”到public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)
s、 w.s.m.m.a.RequestMappingHandlerMapping:将“{[/configuration/ui]}”映射到org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()上
s、 w.s.m.m.a.RequestMappingHandlerMapping:将“{[/configuration/security]}”映射到org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()上
s、 w.s.m.m.a.RequestMappingHandlerMapping:将“{[/swagger resources]}”映射到org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
但是当尝试访问
http://localhost:8080/v2/api-文档
,我得到一个普通的404作为响应

我在网上找到的所有类似问题都是指那些不使用SpringBoot并且必须手动映射资源的人(也在同一教程链接中描述),但我的情况并非如此


有没有办法解决这个问题,或者——至少——在哪里进行调查?

我发现这个问题与jersey的应用程序路径配置有关。在我的例子中,通过以下注释:

@Component
@ApplicationPath("/") //WRONG
@Configuration
public class JerseyConfiguration extends ResourceConfig {
...
}
@ApplicationPath配置覆盖Jersey本身发布的任何路由(如白标签
/error
)或第三方库(在本例中为
/v2/api docs
/configuration/ui
/configuration/security
和来自swagger的
/swagger资源
)。简单地将
/
作为路径迫使严格使用我的应用程序中的自定义控制器来解析请求

@ApplicationPath
限制为应用程序提供服务的实际路径(在我的情况下为
/api
)将允许jersey将其他路由绑定到自动生成的控制器:

@Component
@ApplicationPath("/api") //RIGHT
@Configuration
public class JerseyConfiguration extends ResourceConfig {
...
}

要使用的URL为。使用Spring Boot时,没有应用程序上下文。由于应用程序是使用1:1对容器自部署的,因此所有路由都直接从root/开始。非招摇过市的路线仍然可以从/开始直接进入,只有招摇过市的路线可以获得404…:/上面的配置为我工作。您的配置中是否有@EnableWebMvc?如果是这样,您需要添加ResourceHandler映射。您尝试访问了吗?谢谢您的回复。没有
@EnableWebMvc
,只有
@SpringBootApplication
@EnableAutoConfiguration
。尝试访问swagger-ui.html也会导致404,因此仍然没有运气:/