首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >springdoc openapi+Spring4兼容性

springdoc openapi+Spring4兼容性
EN

Stack Overflow用户
提问于 2020-04-11 00:02:17
回答 1查看 2.3K关注 0票数 2

我有一个现有的Spring4API,并且已经成功地集成了springdoc-openapi来生成JSON/YAML中的OpenAPI 3规范,并使用springdoc-openapi 1.2.29和Spring Boot15.2.2.RELEASE显示了Swagger UI,但是似乎有各种bug被修复,并在后来的springdoc-openapi版本中添加了增强功能。不幸的是,如果我使用高于springdoc-openapi 1.2.29的版本,我会遇到各种与Spring4的兼容性问题。

是否有springdoc-openapi和Spring4的可用性兼容性矩阵?当我通读springdoc-openapi文档时,我没有看到任何自述文件或发行说明表明有Spring 5的要求,但是正如下面所指出的,一旦您达到某个版本,底层的springdoc-openapi中就会使用Spring 5类。

我的相关POM:

代码语言:javascript
复制
    <!-- springdoc-openapi-ui -->
    <!-- anything over 1.2.33 uses Spring 5 MethodParameter.getParameter()-->
    <!-- anything over 1.2.29 uses Spring 5 org.springframework.http.codec.multipart.FilePart -->
    <!-- webjars-locator-jboss-vfs is required for running under JBOSS and exposing the swagger-ui -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-ui</artifactId>
        <version>1.2.29</version>
    </dependency>
    <!--  
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-security</artifactId>
        <version>1.2.29</version>
    </dependency>
    -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot</artifactId>
        <version>1.5.22.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>1.5.22.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>webjars-locator-jboss-vfs</artifactId>
        <version>0.1.0</version>
    </dependency>

当使用springdoc-openapi-ui 1.2.30时,它会随后引入springdoc-openapi-common-1.2.30.jar,它会在尝试使用org.springframework.http.codec.multipart.FilePart.时抛出异常同样,使用1.2.34或更高版本将在MethodParameter.getParameter()上抛出异常。

代码语言:javascript
复制
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1) Caused by: java.lang.NoClassDefFoundError: org/springframework/http/codec/multipart/FilePart
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.core.GenericParameterBuilder.isFile(GenericParameterBuilder.java:271)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.core.GenericParameterBuilder.isFile(GenericParameterBuilder.java:296)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.core.AbstractRequestBuilder.buildParams(AbstractRequestBuilder.java:271)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.core.AbstractRequestBuilder.build(AbstractRequestBuilder.java:174)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:205)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.api.OpenApiResource.calculatePath(OpenApiResource.java:134)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.api.OpenApiResource.getPaths(OpenApiResource.java:99)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.api.AbstractOpenApiResource.getOpenApi(AbstractOpenApiResource.java:124)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springdoc.api.OpenApiResource.openapiJson(OpenApiResource.java:83)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:15:05,003 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at java.lang.reflect.Method.invoke(Method.java:498)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
12:15:05,004 ERROR [stderr] (ajp-localhost/127.0.0.1:8009-1)    ... 61 more

Spring 5参考:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/codec/multipart/FilePart.html

代码语言:javascript
复制
public interface FilePart
extends Part

Specialization of Part that represents an uploaded file received in a multipart request.

Since:
    5.0

对于如何在以后的版本中利用springdoc-openapi中的bug修复和增强功能,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 04:44:40

问题已确认,并将作为1.3.3的一部分解决。请查看下面Springdoc记录的问题。致以@bnasslahsen令人难以置信的快速识别和更正!

https://github.com/springdoc/springdoc-openapi/issues/563

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61144044

复制
相关文章

相似问题

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