SpringBoot 3.2.0 基于SpringDoc接入OpenAPI实现接口文档

news2025/2/6 12:38:56

依赖版本

  • JDK 17
  • Spring Boot 3.2.0
  • SpringDoc 2.3.0

工程源码:Gitee

导入依赖

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springdoc.version>2.3.0</springdoc.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>${springdoc.version}</version>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

创建SpringDoc配置文件

application.yml 配置

server:
  port: 8080

# ======== SpringDocs文档配置 ========
springdocs:
  title: SpringBoot3.2.0 API Docs
  description: SpringBoot3 + OpenAPI Docs
  version: 0.0.1
  scheme: Bearer
  header: Authorization

OpenAPI配置文件

import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "springdocs")
@Setter
@Getter
public class SpringDocsProperties {
    private String title;
    private String description;
    private String version;
    private String header;
    private String scheme;
}
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * SpringDoc配置文件
 */
@Configuration
public class SpringDocConfig {
    @Resource
    private SpringDocsProperties springDocsProperties;
    
    @Bean
    public OpenAPI openApi() {
        return new OpenAPI()
                // 文档描述信息
                .info(new Info()
                        .title(springDocsProperties.getTitle())
                        .description(springDocsProperties.getDescription())
                        .version(springDocsProperties.getVersion())
                )
                // 添加全局的header参数
                .addSecurityItem(new SecurityRequirement()
                        .addList(springDocsProperties.getHeader()))
                .components(new Components()
                        .addSecuritySchemes(springDocsProperties.getHeader(), new SecurityScheme()
                                .name(springDocsProperties.getHeader())
                                .scheme(springDocsProperties.getScheme())
                                .bearerFormat("JWT")
                                .type(SecurityScheme.Type.HTTP))
                );
    }
}

OpenAPI 与 Swagger的 API对应

  • @Api@Tag
  • @ApiIgnore@Parameter(hidden = true) or @Operation(hidden = true) or @Hidden
  • @ApiImplicitParam@Parameter
  • @ApiImplicitParams@Parameters
  • @ApiModel@Schema
  • @ApiModelProperty(hidden = true)@Schema(accessMode = READ_ONLY)
  • @ApiModelProperty@Schema
  • @ApiOperation(value = "foo", notes = "bar")@Operation(summary = "foo", description = "bar")
  • @ApiParam@Parameter
  • @ApiResponse(code = 404, message = "foo")@ApiResponse(responseCode = "404", description = "foo")

演示

springboot3-springdoc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1336718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Ubuntu无法进入系统问题原因及解决方法】

有时因为某些原因&#xff0c;导致破坏了系统使用的某些库&#xff0c;比如libc.so.6被重命名&#xff0c;新替换的库无法兼容。会导致重启后&#xff0c;系统无法启动的现象。 可以通过recovery mode&#xff0c;先进入到系统中&#xff0c;更正错误内容即可。

基于ssm演出人员与观众疫情信息管理系统论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

嵌入式——RTC内置实时时钟

学习目标 理解原理图RTC设计部分掌握初始化RTC掌握设置时间掌握读取时间学习内容 RTC原理图 RTC结构框图 RTC时钟 开发流程 加载依赖。gd32f4xx_rtc.c,gd32f4xx_pmu.c初始化RTC。时钟配置。获取时钟。RTC初始化 // 电池管理加载 rcu_periph_clock_enable(RCU_PMU); pmu_back…

leetcode 6. N 字形变换(medium)(优质解法)

链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码&#xff1a; class Solution {public String convert(String s, int numRows) {if(numRows 1) {return s;}int lengths.length();StringBuilder retnew StringBuilder();//获取…

SecuSphere:一款功能强大的一站式高效DevSecOps安全框架

关于SecuSphere SecuSphere是一款功能强大的一站式高效DevSecOps解决方案&#xff0c;DevSecOps作为一个经过针对性设计的集中式平台&#xff0c;可以帮助广大研究人员管理和优化漏洞管理、CI/CD管道集成、安全评估和DevSecOps实践。 SecuSphere是一个功能全面的DevSecOps平台…

Android Studio 如何隐藏默认标题栏

目录 前言 一、修改清单文件 二、修改代码 三、更多资源 前言 在 Android 应用中&#xff0c;通常会有一个默认的标题栏&#xff0c;用于显示应用的名称和一些操作按钮。但是&#xff0c;在某些情况下&#xff0c;我们可能需要隐藏默认的标题栏&#xff0c;例如自定义标题栏…

python三 pycharrm安装

一、PyCharm下载安装 1&#xff09;访问官网 https://www.jetbrains.com/pycharm/download/#sectionwindows 下载「社区版 Community」 安装包 跟新 官网页面变动&#xff0c;找不到社区版 2&#xff09;下载完成后&#xff0c;「双击」运行安装包&#xff0c;开始安装。 …

西南科技大学计算机网络实验四(交换机基本配置与VLAN配置)

一、实验目的 熟悉交换机的各种基本配置与VLAN配置。 二、实验环境 使用RouterSim Network Visualizer软件来模拟网络设备与网络环境。 三、实验内容 1、交换机的基础配置 2、单台交换机上的简单VLAN设置 3、多台交换机上进行VLAN设置 四、实验步骤 4.1 交换机的基础配置…

微流控芯片建模

微流控芯片 北京线下&#xff1a;书本教材及所有案例模型文件、会议回放视频&#xff1b; Comsol Multiphysics建模专题&#xff1a;通道流动、通道结构、对流扩散、电泳、小变形流固耦合、相界面模拟&#xff1a;多相流液滴分离 IB-LBM建模专题&#xff1a;通道流动、耦合浸…

JavaScript开发日记:JavaScript语法糖和性能优化(一)

常用语法总结 声明变量&#xff08;var、let和const的定义详解&#xff09;定义同类型变量赋值运算符缩写判断Null 或 UndefinedJavaScript Array includes() 方法三元运算符 声明变量&#xff08;var、let和const的定义详解&#xff09; var&#xff1a;既可声明全局变量&…

2015年第四届数学建模国际赛小美赛C题科学能解决恐怖主义吗解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 C题 科学能解决恐怖主义吗 原题再现&#xff1a; 为什么人们转向恐怖主义&#xff0c;特别是自杀性恐怖主义&#xff1f;主要原因是什么&#xff1f;这通常是大问题和小问题的结合&#xff0c;或者是一些人所说的“推拉”因素。更大的问题包…

20 Redis进阶 - 运维监控

1、理解Redis监控 Redis运维和监控的意义不言而喻&#xff0c;可以以下三个方面入手 1.首先是Redis自身提供了哪些状态信息&#xff0c;以及有哪些常见的命令可以获取Redis的监控信息; 2.一些常见的UI工具可以可视化的监控Redis; 3.理解Redis的监控体系;2、Redis自身状态及命…

Python学习之判断语句,从基础到实践

文章目录 前言为什么学习判断语句布尔类型和比较运算符if语句的基本格式练习案例&#xff1a;成年人判断 if else 语句if elif else语句练习案例&#xff1a;猜猜心里数字 判断语句的嵌套实战案例关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品…

uniapp使用localStorage存储值遇到的问题

1. 数据存储localStorage llocalStorage是本地存储&#xff0c;是将数据存储到浏览器的方法&#xff0c;一般在跨页面时使用。 uniapp提供数据存和取的api。 uni.setStorage({key:runTime,data:this.sumRTtime.toFixed(3),success:function(){console.log(success);})从图中可…

鸿蒙应用开发者认证(基础、高级)

认证地址 认证地址&#xff1a;HarmonyOS认证地址 注意事项 拥有华为云开发者账号要实名认证 认证方式 在线考试形式、判断题、单选题、多选题 &#xff0c;基础认证90分及格&#xff0c;高级认证80分及格&#xff0c;证书两年有效 不建议各位百度答案&#xff0c;最好看完Ha…

众和策略:12月新批国产网游版号数量过百

上星期五&#xff08;22日&#xff09;&#xff0c;A股冲高回落&#xff0c;三大股指挨近午盘拉升走高&#xff0c;午后再度回落走低&#xff0c;沪指尾盘跌幅收窄。到收盘&#xff0c;沪指跌0.13%报2914.78点&#xff0c;深成指跌0.39%报9221.31点&#xff0c;创业板指跌0.37%…

nvm node 安装与配置

nvm Node Version Manager&#xff08;NVM&#xff09; 是一种用于管理多个主动节点.js版本的工具。 nvm官网下载地址 https://github.com/coreybutler/nvm-windows/releases 如果电脑上之前已经单独安装了node&#xff0c;先卸载&#xff08;可以在控制面板里面卸载&#xf…

【JVM】虚拟机栈与本地方法栈

一、虚拟机栈&#xff08;VM Stack&#xff09; 1.1&#xff09;什么是虚拟机栈   虚拟机栈是用于描述java方法执行的内存模型。   每个java方法在执行时&#xff0c;会创建一个“栈帧&#xff08;stack frame&#xff09;”&#xff0c;栈帧的结构分为“局部变量表、操作数…

引用jquery.js的html5基础页面模板

本专栏是汇集了一些HTML常常被遗忘的知识&#xff0c;这里算是温故而知新&#xff0c;往往这些零碎的知识点&#xff0c;在你开发中能起到炸惊效果。我们每个人都没有过目不忘&#xff0c;过久不忘的本事&#xff0c;就让这一点点知识慢慢渗透你的脑海。 本专栏的风格是力求简洁…