SpringBoot3.0集成SpringDoc2.0

news2024/11/18 22:59:58

SpringBoot3.0集成SpringDoc

  • 1. pom配置
  • 2. OpenApi配置类
  • 3. 使用
  • 4. SpringDoc注解与SpringFox对比
  • 5. 演示项目

这里为什么要使用SpringDoc呢?是因为集成SpringFox只支持SpringBoot2.x,
而基于Swagger的SpringDoc的社区现在十分活跃,代码也在不断更新。
SpringFox自从2020年7月14号之后就不更新了。

在这里插入图片描述

1. pom配置

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.0.2</version>
</dependency>

2. OpenApi配置类

这里和Swagger配置类似,主要是配置接口的标题、描述、版本信息、Authorizations权限等。
下面两个分组信息也可以根据项目自身进行配置即可。

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityScheme;

/**
 * SpringDoc 配置类
 *
 * @author Jack魏
 * @since 2023/1/8 16:51
 */
@Configuration
public class OpenApiConfig {
    /**
     * SpringDoc 标题、描述、版本等信息配置
     *
     * @return openApi 配置信息
     */
    @Bean
    public OpenAPI springDocOpenAPI() {
        return new OpenAPI().info(new Info()
                        .title("YiYi API")
                        .description("YiYi接口文档说明")
                        .version("v0.0.1-SNAPSHOT")
                        .license(new License().name("YiYi项目博客专栏")
                                .url("https://blog.csdn.net/weihao0240/category_12166012.html")))
                .externalDocs(new ExternalDocumentation()
                        .description("码云项目地址")
                        .url("https://gitee.com/jack0240/YiYi"))
                // 配置Authorizations
                .components(new Components().addSecuritySchemes("bearer-key",
                        new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer")));
    }

    /**
     * demo 分组
     *
     * @return demo分组接口
     */
    @Bean
    public GroupedOpenApi siteApi() {
        return GroupedOpenApi.builder()
                .group("demo接口")
                .pathsToMatch("/demo/**")
                .build();
    }

    /**
     * sys 分组
     *
     * @return sys分组接口
     */
    @Bean
    public GroupedOpenApi adminApi() {
        return GroupedOpenApi.builder()
                .group("sys接口")
                .pathsToMatch("/sys/**")
                .build();
    }
}

3. 使用

可以看到注解的方式和Swagger基本上一模一样,就是名字有所变化而已。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.jack.yiyi.bean.SysUser;
import com.jack.yiyi.service.sys.SysUserService;
import com.jack.yiyi.util.Result;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag;


/**
 * 系统用户Controller控制类
 *
 * @author Jack魏
 * @since 2022-11-12
 */
@Tag(name = "系统用户接口", description = "系统用户接口")
@RestController
@RequestMapping("/sys/user/")
public class SysUserController {
    @Autowired
    private SysUserService sysUserService;

    /**
     * 注册后台系统用户
     *
     * @param sysUser 前端注册信息
     * @return 注册用户信息
     */
    @Operation(summary = "注册接口", description = "输入用户信息进行注册")
    @Parameters({
            @Parameter(name = "account", description = "登录账号", required = true),
            @Parameter(name = "password", description = "密码", required = true)
    })
    @PostMapping("register")
    public Result<String> register(SysUser sysUser) {
        // 登录名参数校验
        if (sysUser.getAccount() == null || "".equals(sysUser.getAccount())) {
            return Result.fail("注册用户名不能为空");
        }
        // 密码参数校验
        if (sysUser.getPassword() == null || "".equals(sysUser.getPassword())) {
            return Result.fail("密码不能为空");
        }

        SysUser user = sysUserService.register(sysUser);
        if (user == null) {
            return Result.fail("注册失败!请更换登录名!");
        }
        return Result.success("注册成功,欢迎您:" + sysUser.getAccount());
    }
}

通过上面的配置之后,启动项目即可,然后访问:
http://127.0.0.1:8181/yiyi/swagger-ui/index.html
因为此项目也配置了Security,所以先输入用户:user、密码:123456
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. SpringDoc注解与SpringFox对比

官网地址:https://springdoc.org/v2/#migrating-from-springfox

SpringFoxSpringDoc作用
@Api@Tag在controller类上声明接口
@ApiIgnore@Parameter(hidden = true) 或 @Operation(hidden = true) 或 @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”)返回说明

5. 演示项目

https://gitee.com/jack0240/YiYi

在这里插入图片描述

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

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

相关文章

excel 设置双坐标轴柱状图

思路&#xff1a;通过添加辅助列来调整。 步骤&#xff11; 选中数据&#xff0c;插入柱状图&#xff0c;这时候会得到原始的柱状图 选中“设计”&#xff0d;“更改图表类型”&#xff0d;“组合”&#xff0c;调整图表类型均为柱状图&#xff0c;可以得到初始双坐标轴图表…

Linux应用编程---7.有名管道

Linux应用编程—7.有名管道 7.1 mkfifo函数详情 ​ 无名管道用于具有亲缘关系的进程之间通讯&#xff0c;比如&#xff1a;父子进程、兄弟进程。有名管道用于非亲缘关系进程之间的通讯。创建有名管道使用到的库函数是&#xff1a;mkfifo()&#xff0c;这里强调是库函数的原因…

Elasticsearch连续剧之基础篇

目录一、前言二、Elasticsearch数据结构三、安装1.配置最大可创建文件数大小2.由于ES不能以root用户运行&#xff0c;我们需要创建一个非root用户&#xff0c;此处创建一个名为es的用户3.安装es4.启动es服务四、常用操作1.创建没有结构的索引2.创建有结构的索引3.删除索引4.文档…

【迅为iMX6Q】开发板 u-boot 2020.04 RTL8211E 以太网驱动适配

相关参考 【迅为iMX6Q】开发板 u-boot 2015.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2020.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2022.04 SD卡 启动 开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 22.04 【迅为imx6q】开发板&#xff0c; 2G DDR 目标 …

SAP Webservice 发布外网SAP端代理配置

前言 SAP Webservice接口发布外网的需求不算少见&#xff0c;一般是通过代理形式替换Webservice地址中的域名&#xff0c;但是完整的Webservice接口发布外网还需要以下步骤&#xff08;如果调用方在不做这些配置的情况下可以正常调用&#xff0c;则无需处理。&#xff09; 1. 配…

gravity 安装部署

gravity是由膜拜公司自主研发的不同数据库间数据同步工具。 官方介绍&#xff1a;https://github.com/moiot/gravity/blob/master/README-cn.md Gravity 是一款数据复制组件&#xff0c;提供全量、增量数据同步&#xff0c;以及向消息队列发布数据更新。 DRC 的设计目标是&a…

有电脑就可以干的工作有哪些?试试这些项目

现在几乎人人都有手机&#xff0c;吃饭时候看&#xff0c;睡觉的时候看&#xff0c;上个厕所也在看&#xff0c;有次坐地铁&#xff0c;发现很多上学的初中生、小学生都拿着手机&#xff0c;手机档次还挺高&#xff0c;都是最新的苹果、华为款的手机。反之再看看使用电脑的人又…

Linux——信号知识归纳(上)

一.信号概念&#xff08;一&#xff09;.大致认识信号是操作系统控制进程的一种方式&#xff0c;比如ctrl C、栈溢出程序崩溃、kill -9命令等底层都是操作系统发送信号给进程执行特定操作。因此&#xff0c;所有信号就底层而言都是操作系统发出的。同时&#xff0c;进程接收到信…

Java设计模式中桥接模式是什么/桥接模式有什么用,怎么运用桥接模式

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 5.5 桥接模式 5.5.1 定义 将抽象与实现分离&#xff0c;使他们可以独立变化&#xff0c;即用组合关系来代替继承关系实现&#xff0c;从而降低抽象与实现两个可变…

相参雷达(CSDN_0004_20220909)

文章编号&#xff1a;CSDN_0004_20220909 雷达信号处理中的一个基本操作是对样本进行积累&#xff0c;以提高SNR。积累的方式包括相参积累和非相参积累。相参积累是对复数信号&#xff08;既包括幅度又包括相位&#xff09;相加积累&#xff1b;非相参积累是对信号的幅度&#…

【时间复杂度与空间复杂度】衡量算法的标准,这篇文章让大家更深刻的理解时间复杂度和空间复杂度

前言&#xff1a; 大家好&#xff0c;我是良辰丫&#xff0c;今天和大家一起讨论一下时间复杂度与空间复杂度&#xff0c;往往来说&#xff0c;这两者是衡量算法好坏的标准&#xff0c;举个简单的例子&#xff0c;你想吃核桃了&#xff0c;用牙能弄开&#xff0c;用夹子也能弄开…

SAP灵活工作流场景配置及Demo测试

首先确保对应流程模板处于激活状态,并且事件已经激活 1. 在Fiori app 管理工作流中配置流程场景 地址&#xff1a;/sap/bc/ui2/flp?sap-client100&sap-languageZH#Workflow-showList 选择创建的灵活工作流模板&#xff0c;点击添加&#xff0c;开始配置场景 维护基本属性及…

JavaSE学习day2_02, IDEA的使用(重点)

4. idea 4.1 什么是idea&#xff1f; 是Java的集成开发工具&#xff0c;该工具把编写代码&#xff0c;编译&#xff0c;运行&#xff0c;调试等都集中在一起了。目前绝大多数企业编程用的执行环境. 特点&#xff1a; 自动保存、自动编译。 我们在使用的时候主要注重于两步…

SpringCloud微服务!!

目录 1.系统架构的演变 2.微服务简介 1.什么是微服务&#xff1f; 2.实现微服务的技术方案有哪些&#xff1f; 3.什么是SpringCloud? 4.微服务技术点【重点】 4.1服务治理、服务注册、服务发现 4.2 Eureka注册中心 4.2.1 Eureka介绍 4.2.2 Eureka 使用入门 4.2.3 Eureka的…

13_1、Java的IO流之File类的使用

一、File类的理解1、File的对象代表着一个文件或者一个文件目录。2、File类在java.io包下。3、File类中涉及文件或文件目录相关的创建、删除、重命名、修改时间、文件大小等方法&#xff0c;并未涉及到对文件内部的内容的读取、写入等操作&#xff0c;如果需要对文件的内容进行…

2023年玩兔年小游戏《兔兔保卫萝卜战》赢新年祝福「钱兔无量」

PS&#xff1a;粉丝可以免费领源码&#xff0c;私信我或者评论666即可~~~~~~~~ 导读 | 世界杯虽已闭幕&#xff0c;但其带给我们的精彩&#xff0c;仿佛就在昨天&#xff0c;想一想&#xff0c;还是有一种爽劲&#xff0c;不知道大家是否也这样&#xff1f;转眼就到了2023年&a…

Java框架:Mybatis

文章目录一、Mybatis概述1.1概念1.2优点与缺点1.3MyBatis和Hibernate的区别1.4Mybatis的核心对象1.5Mybatis执行流程三、Mybatis的快速使用3.1开发环境3.2 创建一个maven项目3.3添加Maven依赖3.4MySQL创建user表3.5创建数据源database.properties文件3.6编写mybatis-config.xml…

H13-531云计算HCIE V2.0——1~400常错题和知识点总结

1~100 35、FusionStorage Block无法是被配置RAID的磁盘,一定要将RAID信息删除后, Fusionstrage block才能识别到这些磁盘? 错误 61、Ceilometer监控通过在计算节点部署Compute服务 84.&#xff08;多选&#xff09;在配置 FusionSphere OpenStack 时&#xff0c;可以用来实…

商务BD干多了,做一个无情的微信发消息机器人帮我发消息吧

1. 有没有那种做微信的伙伴&#xff0c;每天需要定点定时发消息&#xff1f; 2. 有没有那种做电商商务的朋友&#xff0c;每天需要发消息提醒达人商务们&#xff1f; 3. 有没有那种需要定时定点打卡&#xff0c;需要提醒自己要干啥的兄弟姐妹&#xff1f;** 那么有没有大冤种去…

如何获取电脑软件图标和app图标

如何获取电脑软件图标和app图标大家在写博客或者作图的时候经常会需要找到电脑软件图标或者app图标&#xff0c;如果从网上找有的图标并不清楚&#xff0c;今天给大家分享下&#xff0c;怎么快速的获取电脑软件图标和app图标&#xff0c;得到的图标也比较清楚。电脑软件图标获取…