首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用springdoc-openapi将Open API 3与Spring项目(而不是Spring Boot)集成

如何使用springdoc-openapi将Open API 3与Spring项目(而不是Spring Boot)集成
EN

Stack Overflow用户
提问于 2020-01-23 11:29:14
回答 5查看 5.9K关注 0票数 11

我现有的项目是基于Spring框架的,而不是Spring Boot。

我想把Open API 3和它集成在一起。

我想使用springdoc-openapi进行集成,而不是使用Jersey。

EN

回答 5

Stack Overflow用户

发布于 2021-01-04 12:34:17

使用springdoc-openapi-ui 1.5.2加载spring-mvc (5.3.1)的ui看起来更简单:

build.gradle (Gradle6.5版)

代码语言:javascript
运行
复制
implementation 'org.springdoc:springdoc-openapi-ui:1.5.2'

springdoc:springdoc-openapi-ui:1.5.2已经有了它们(版本2.4.0),所以在依赖项一节中不需要spring-boot-autoconfigure和spring-boot。您将会惊讶地发现,最终应用程序中将添加多少个依赖项和哪些依赖项。

OpenApiConfig.java

代码语言:javascript
运行
复制
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"org.springdoc"})
@Import({org.springdoc.core.SpringDocConfiguration.class,
         org.springdoc.webmvc.core.SpringDocWebMvcConfiguration.class,
         org.springdoc.webmvc.ui.SwaggerConfig.class,
         org.springdoc.core.SwaggerUiConfigProperties.class,
         org.springdoc.core.SwaggerUiOAuthProperties.class,
         org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class})

class OpenApiConfig implements WebMvcConfigurer {
}

OpenApiConfig包应包含在组件扫描中。

在使用Spring Security的情况下,您可以添加两个url模式,并在代码中定义OpenAPI页面访问的角色。

代码语言:javascript
运行
复制
<security:intercept-url pattern="/swagger*/**" access="ROLE_DEVELOPER"/>
<security:intercept-url pattern="/v3/api-docs" access="ROLE_DEVELOPER"/>

要检查的urls:

代码语言:javascript
运行
复制
http://localhost:8080/your_context_path/swagger-ui.html
http://localhost:8080/your_context_path/v3/api-docs
票数 8
EN

Stack Overflow用户

发布于 2020-01-23 22:17:33

即使你的应用程序没有使用spring (spring-boot),它也应该可以工作。您需要添加在spring-boot中原生提供的bean和依赖项自动配置。

您主要需要添加springdoc-openapi模块并扫描spring-boot自动为您加载的springdoc自动配置类。根据您的模块,您可以在每个springdoc-openapi模块的文件:spring.factories中找到它们。

例如,假设您想要在spring-mvc应用程序中加载swagger-ui,并且您正在使用spring.version=5.1.12.RELEASE,并且您

您可以添加以下依赖项:

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

如果您没有spring-bootspring-boot-autoconfigure依赖项,则需要添加它们。注意spring.verionspring-boot.version之间的兼容性矩阵。例如,在本例中(spring.version=5.1.12.RELEASE):

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
    <version>2.1.11.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.1.11.RELEASE</version>
</dependency>

在这种情况下,当我们想要加载spring-mvc的ui时,您将需要在您的一个配置类中添加以下内容:

代码语言:javascript
运行
复制
@Import({ org.springdoc.core.SpringDocConfiguration.class, 
          org.springdoc.core.SpringDocWebMvcConfiguration.class,
          org.springdoc.ui.SwaggerConfig.class, 
          org.springdoc.core.SwaggerUiConfigProperties.class,
          org.springdoc.core.SwaggerUiOAuthProperties.class,
          org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration.class
})
票数 1
EN

Stack Overflow用户

发布于 2020-09-11 04:00:45

您可以使用@Annotations来完成此操作

代码语言:javascript
运行
复制
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.servers.Server;
import io.swagger.v3.oas.annotations.info.Info

@OpenAPIDefinition(info = @Info(title = "My REST API", version = "1.2.6",
            description = "My OpenAPIDefinition description"),
                servers = { @Server(url = "/my-api", description = "Default URL")})
public class OpenApiConfig { }

Springdoc OpenAPI UIMaven Central Repository的依赖性

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

Maven中央存储库:

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

https://stackoverflow.com/questions/59871209

复制
相关文章

相似问题

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