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

依赖版本

  • 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 Docsdescription: SpringBoot3 + OpenAPI Docsversion: 0.0.1scheme: Bearerheader: 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 {@Resourceprivate SpringDocsProperties springDocsProperties;@Beanpublic 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.mzph.cn/news/579438.shtml

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

相关文章

EasyCVR无人机推流+人数统计AI算法,助力公共场所人群密度管控

一、背景与需求 在公共场所和大型活动的管理中&#xff0c;人数统计和人群密度控制是非常重要的安全问题。传统的方法可能存在效率低下或准确度不足的情况&#xff0c;无法满足现代社会的需求。TSINGSEE青犀可以利用无人机推流AI人流量统计算法&#xff0c;基于计算机视觉技术…

渗透测试(Lab4.0)

配置WebDeveloper的时候遇到一个错误 导入失败&#xff0c;因为 E:…ovf 未通过 OVF 规范一致性或虚拟硬件合规性检查。 请单击“重试”放松 OVF 规范与虚拟硬件合规性检查&#xff0c;并重新尝试导入&#xff1b; 或单击“取消”以取消导入。如果重新尝试导入&#xff0c;可能…

javaweb--实验十 --期末复盘

实验十 JDBC连接MySQL 本次实验没有代码补全&#xff0c;以下都是完整过程&#xff0c;详细关注连接过程的问题 一、实验目的&#xff1a; 1、掌握JDBC连接数据库的一般操作。 2、理解JavaBean的基本作用。 3、理解分层设计的思想。 二、 实验内容&#xff1a; 实现学生信…

PostgreSQL | FunctionProcedure | 函数与存储过程的区别

文章目录 PostgreSQL | Function&Procedure | 函数与存储过程的区别1. 简述书面说法大白话讲 2. 函数&#xff08;Function&#xff09;2.1 定义2.2 用途2.3 执行2.4 事务处理2.5 说点例子1. 当参数都是IN类时2. 参数中出现OUT、INOUT参数时 3. 存储过程&#xff08;Proced…

一图梳理多模态领域发展简史

本文采用关系图的方式整理了&#xff1a;CLiP、ViLT、FLiP、ALBEF、CoCa、BLiP、VLMo、BEiT 和BEiT v3等近几年来经典的多模态大模型&#xff0c;以及这些工作的相互依托关系。灵感来自&#xff1a;跟李沐读论文系列——多模态串讲 1 模型关系图&#xff1a; ’ 2 各模型的架…

OpenAPI,已支持表单数据格式校验

OpenAPI 路径 开放平台 功能简介 「OpenAPI」- 支持表单数据格式校验。 通过「OpenAPI-新增表单数据」接口&#xff0c;新增数据时&#xff0c;若数据格式不匹配&#xff0c;会导致无法新增。 例如&#xff0c;数字不能新增到日期格式的表单字段。 请参考数据格式传参&a…

跨境电商测评攻略及其工具海外云手机的介绍

近些年随着跨境电商的火热&#xff0c;各商家纷纷想尽办法在激烈的竞争中取得一席之地&#xff0c;产品测评就是其中一个重要手段。本文将详细阐述跨境电商的测评攻略以及介绍一个测评的好工具海外云手机。 不管是速卖通&#xff0c;还是亚马逊、ebay&#xff0c;做测评都是非常…

软件测试的人是专门为难开发人员的吗?不不不我是来和开发抬杠的

我觉得就对对对&#xff0c;就不应该有测试这个岗位。 开发完&#xff0c;直接上线。 你看&#xff1a; 1.省了测试人员的薪酬&#xff0c;岗位。 2.省了测试时间&#xff0c;快速交付。快速上线&#xff0c;抢占市场。 3.让用户当免费的测试劳动力。有问题让客户提BUG就好…

Python (十六) pandas(四)

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

<script setup> 的作用

一、使用<script setup> 之后&#xff0c;就不需要手动写以下代码&#xff0c;只要写逻辑代码 未加setup&#xff0c;vite 工程要加上下面代码 *export default{ * setup(){ * //只要写逻辑代码 * return{***} * } * } 加了setup &#xff0c;export default 、…

Java小案例-Feign的超时时间如何设置

前言 Feign的超时时间如何设置&#xff1f; Feign的超时时间设置方式并不固定&#xff0c;它取决于Feign在项目中是如何使用的&#xff0c;不同的使用方式&#xff0c;超时时间设置方式也不大相同&#xff0c;甚至还可能有坑。 由于文章会涉及到Feign的底层知识&#xff0c;…

【easy-ES使用】1.基础操作:增删改查、批量操作、分词查询、聚合处理。

easy-es、elasticsearch、分词器 与springboot 结合的代码我这里就不放了&#xff0c;我这里直接是使用代码。 基础准备&#xff1a; 创建实体类&#xff1a; Data // 索引名 IndexName("test_jc") public class TestJcES {// id注解IndexId(type IdType.CUSTOMI…

SpringBoot整合JWT+Spring Security+Redis实现登录拦截(一)登录认证

一、JWT简介 JWT 全称 JSON Web Token&#xff0c;JWT 主要用于用户登录鉴权&#xff0c;当用户登录之后&#xff0c;返回给前端一个Token&#xff0c;之后用户利用Token进行信息交互。 除了JWT认证之外&#xff0c;比较传统的还有Session认证&#xff0c;如何选择可以查看之前…

Spring中常见的BeanFactory后处理器

常见的BeanFacatory后处理器 先给出没有添加任何BeanFactory后处理器的测试代码 public class TestBeanFactoryPostProcessor {public static void main(String[] args) {GenericApplicationContext context new GenericApplicationContext();context.registerBean("co…

JAVA复习三——CH5 Java Collection 、CH6 MultiThread

CH5 Java Collection(集合) 5.1 Java集合框架&#xff08;位于java.util包中&#xff09; 图一 集合框架图 从上面的集合框架图可以看到&#xff0c;Java 集合框架主要包括两种类型的容器&#xff0c;一种是集合&#xff08;Collection&#xff09;&#xff0c;存储一个元素集…

信息犯罪与计算机取证

1.信息安全 信息安全的三种定义p2 ISO的 为数据处理系统建立和采取的技术和管理的安全保护&#xff0c;保护计算机硬件&#xff0c;软件数据不因偶尔或恶意的原因而受到破坏&#xff0c;更改和泄露 欧盟的 在既定的密级条件下&#xff0c;网络与信息系统抵御意外或恶意行为的能…

【C++】const 关键字

想要正确理解const关键字&#xff0c;只需记住一句话&#xff1a; cosnt关键字优先修饰左边&#xff0c;如果左边每东西&#xff0c;就作用于右边。 const int a; 修饰int a 不能改变 const int *a ; int const *a; 修饰int 指针a指向的地址可以改变&#xff0c;但是地址中…

flask文件夹列表改进版--Bug追踪

把当前文件夹下的所有文件夹和文件列出来&#xff0c;允许点击返回上层目录&#xff0c;允许点击文件夹进入下级目录并显示此文件夹内容 允许点击文件进行下载 from flask import Flask, render_template, send_file, request, redirect, url_for import osapp Flask(__name_…

抖店只能做和营业执照对照的产品吗?开店基础教程,新手可收藏!

我是王路飞。 抖店的营业执照有多重要呢&#xff1f;关系到你店铺的类型、类目和产品。 尤其是适合新手做的个体店&#xff0c;不涉及对公账户&#xff0c;货款可以直接提现到你的私人银行卡里&#xff0c;保证金也只有企业店铺的一半。 &#xff08;只需要身份证就能开通的…

深入Apache Commons Config:管理和使用配置文件

第1章&#xff1a;引言 咱们都知道&#xff0c;在软件开发中&#xff0c;管理配置文件是一件既重要又让人头疼的事。想象一下&#xff0c;咱们的应用程序有一堆设置需要调整&#xff0c;比如数据库的连接信息、应用的端口号&#xff0c;或者是一些功能的开关。如果这些信息硬编…