首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从SpringFox迁移到SpringDoc后得到“映射为‘/v3/api-docs’的”模糊处理程序方法“

从SpringFox迁移到SpringDoc后得到“映射为‘/v3/api-docs’的”模糊处理程序方法“
EN

Stack Overflow用户
提问于 2021-09-14 02:24:04
回答 3查看 5.8K关注 0票数 5

使用SpringBoot2.4.5和IntelliJ 2021.2。迁移后

代码语言:javascript
运行
复制
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.5.10</version>
</dependency>

每次我访问http://localhost:8080/swagger-ui.html。这一页写着:

提取未定义的错误/v3/api-docs

当我检查日志时:

springfox.documentation.oas.web.OpenApiControllerWebMvc.getDocumentation(java.lang.String,java.lang.IllegalStateException:映射到‘/v3/api-docs’的模棱两可的处理程序方法:{public org.springframework.http.ResponseEntity java.lang.IllegalStateException javax.servlet.http.HttpServletRequest),public java.lang.String java.lang.IllegalStateException把com.fasterxml.jackson.core.JsonProcessingException}扔给org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:426),在org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:377),org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:125),org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:67),org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(( org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1257) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) )

似乎有一个来自SpringFox的具有相同路径的重复处理程序方法,我将如何从SpringFox中删除这个处理程序(它在我的pom文件中不再存在)?

EN

回答 3

Stack Overflow用户

发布于 2022-02-17 12:56:30

移除挥霍无度的依赖项,即springfox依赖项。仅添加openapi依赖项就足够了。

代码语言:javascript
运行
复制
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.6.6</version>
    </dependency>
票数 6
EN

Stack Overflow用户

发布于 2021-09-14 20:25:39

您还有这两种依赖关系吗?我也有同样的问题,除了网络流量。经过一番挖掘,我发现了以下几点:

  • springdoc-openapi-webflux-core-1.5.10: OpenAPIWebfluxResource.class
  • springfox-oas-3.0.0: OpenAPIControllerWebFlux.class

这两个类都为“/v3/api”映射创建处理程序。正如springdoc文档所警告的那样,它们是不兼容的:

https://springdoc.org/#differentiation-to-springfox-project

11.35。分化到Springfox项目

  • 美洲国家组织3于2017年7月发布,目前还没有发布springfox来支持美洲国家组织3。目前,springfox的封面只与springfox集成在一起。最新的发布日期是2018年6月。因此,在维护方面,lately.
  • ...
  • We依赖于swagger注解和swagger-ui的官方libraries.
  • ...

是非常缺乏支持的。

11.36。如何使用springdoc迁移到OpenAPI 3?

springdoc与您想要迁移到springfox

  • Add 3的springfox.If之间没有任何关系:

  • 移除所有依赖项和相关代码到 springdoc- OpenAPI -ui dependency
  • If您不希望从根路径为UI提供服务,或者与现有配置发生冲突,您可以只更改以下属性:

springdoc.swagger-ui.path=/you-path/swagger-ui.html

票数 4
EN

Stack Overflow用户

发布于 2022-11-28 15:29:43

您可以这样做:springdoc-openapi-ui + springfox-swagger2,而不是springfox-boot-starter

代码语言:javascript
运行
复制
<dependency>
  <groupId>org.springdoc</groupId>
  <artifactId>springdoc-openapi-ui</artifactId>
  <version>1.5.4</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
     <version>3.0.0</version>
</dependency>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69171098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档