SpringBoot整合Swagger3的流程详解

 更新时间:2024年01月04日 09:20:14   作者:Splaying  
这篇文章主要介绍了SpringBoot整合Swagger3的流程详解,Swagger最核心的类就是Docket、它可以配置作者信息、扫描类型,在SwaggerConfig配置类,添加@Configuration和@EnableOpenApi注解,需要的朋友可以参考下

1、创建项目

首先创建一个SpringBoot项目,随便勾选几个项目依赖,我选择了web、thymeleaf、lombok。

在这里插入图片描述

添加项目依赖,这里使用Swagger3(与Swagger2略有差异),并且添加一个好看一点的ui界面

<!-- swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
</dependency>

2、配置Swagger

  • Swagger最核心的类就是Docket、它可以配置作者信息、扫描类型…
  • 首先创建一个SwaggerConfig配置类,添加@Configuration和@EnableOpenApi注解。
  • 然后再向里面丢入Docket类的Bean实例,然后默认就可以访问了
@Configuration
@EnableOpenApi
public class SwaggerConfig {
	@Bean
    Docket docket(){
		return new Docket(DocumentationType.SWAGGER_2)
	}
}

访问localhost:8080/doc.html页面就可以看到了,/error接口的8种请求方式默认会出现在文档中,以及一些可以配置的信息

在这里插入图片描述

3、Swagger配置

上图红字的位置都是可以进行配置的,可以针对不同人写的不同接口等信息放在不同的分组中。

3.1、配置主页信息

其实这里有用的没几个,基本上很多信息都是默认给出。

@Bean
public ApiInfo apiInfo(){
    return new ApiInfo("这是Swagger文档",				//title名称
            "归来仍是少年",								//简介
            "1.0",										//版本
            "urn:tos",									//服务url
            new Contact(								//配置联系作者的方式
            	"xxx",									//作者名称
            	"https://www.baidu.com",				//连接
            	"xxxx@qq.com"),							//作者邮箱
            "Apache 2.0",								//许可证
            "http://www.apache.org/licenses/LICENSE-2.0",		//许可证地址
            new ArrayList<>());							//供应商的拓展
}

3.2、配置Docket信息

  • 上面配置了主页面的一些信息,然后需要将这些信息注入到Docket中。
  • 另外配置扫描接口的路径、过滤、分组以及是否开启等
  • 当然这里可以拿到环境配置文件、可以根据不同的环境决定是否开启;一般情况下这些接口都是在开发环境中进行展示的,实际交付的时候是不会提供的。
  • Docket是采用链式编程的形式进行配置,当存在多个Docket时可以通过不同的分组名称进行区分
@Bean
Docket docket_A(){
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("TestA");
}

@Bean
Docket docket_B (){
    return new Docket(DocumentationType.SWAGGER_2)
            .groupName("TestB");
}


@Bean
Docket docket(Environment environment){

    boolean result = environment.acceptsProfiles(Profiles.of("dev"));

    return new Docket(DocumentationType.SWAGGER_2)
    		.groupName("Splay")				//默认分组Default改为Splay
            .apiInfo(apiInfo())				//注入主页面信息
            .enable(true)                   //是否启用swagger
            .select()						//扫描
            /**
             * apis指定要扫描的方式
             * 1. basePackage(): 指定扫描的包
             * 2. any(): 全部扫描
             * 3. none(): 都不扫描
             * 4. withClassAnnotation(): 通过类注解扫描
             * 5. withMethodAnnotation(): 通过方法上的注解扫描
             */
            .apis(RequestHandlerSelectors.basePackage("com.splay.controller"))
            /**
             * paths过滤不需要
             * 1. ant(): 制定路径
             * 2. none(): 全都不过滤
             * 3. any(): 都过滤
             * 4. regex(): 正则表达式
             */
            //.paths(PathSelectors.ant("/splay/**"))		//过滤不需要的路径
            .build();
}

3.3、编写Controller

上面通过apis方法配置只扫描com.splay.controller包下的所有接口

@Controller
public class RouterController {
    
    @GetMapping("/hello")
    @ResponseBody
    public String toHello(){
        return "Hello Swagger";
    }
}

这里可以绑定开启的环境,通过Environment拿到进行判断再决定是否开启。

在这里插入图片描述

3.4、效果图

在这里插入图片描述

4、注解的使用

  • Swagger提供了很多的注解,几乎所有需要提供展示的东西都可以使用注解来开启。
  • @Api配置Controller类、@ApiModel类可以给pojo进行展示、@ApiModelProperty配置pojo的属性、@ApiOperation配置方法…

4.1、pojo的配置

当返回值存在当前配置的pojo时,可以在model页面看到这些信息。

@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("用户类" )
public class User {

    @ApiModelProperty("用户名")
    private String username;

    @ApiModelProperty("密码")
    private String password;

}

4.2、Controller的配置

Controller的名称将会展示为tags属性中的值

@Controller
@Api(tags = "路由控制类")
public class RouterController {
	
}

4.3、接口名称的配置

@PostMapping("/user")
@ResponseBody
@ApiOperation("返回用户信息")			//接口名称、以及参数
public User sendUserMessage(@ApiParam("用户帐号") String username){
    System.out.println(username);
    return new User("admin", "123456");
}

4.4、效果图

在这里插入图片描述

到此这篇关于SpringBoot整合Swagger3的流程详解的文章就介绍到这了,更多相关SpringBoot整合Swagger3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java之JSF框架案例详解

    Java之JSF框架案例详解

    这篇文章主要介绍了Java之JSF框架案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • springcloud3 Sentinel的搭建及案例操作方法

    springcloud3 Sentinel的搭建及案例操作方法

    Sentinel是分布式系统流量控制的哨兵,阿里开源的一套服务容错的综合性解决方案,这篇文章主要介绍了springcloud3 Sentinel的搭建以及案例操作,需要的朋友可以参考下
    2023-01-01
  • Spring Cloud实现远程调用OpenFeign组件的方法

    Spring Cloud实现远程调用OpenFeign组件的方法

    本文主要介绍了SpringCloud中实现远程调用的组件OpenFeign的相关知识与操作,包括OpenFeign的介绍、快速上手、参数传递和最佳实践,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • 利用java、js或mysql计算高德地图中两坐标之间的距离

    利用java、js或mysql计算高德地图中两坐标之间的距离

    最近因为工作的需求,需要计算出高德地图中两个坐标的距离,通过查找相关资料发现了多种实现的方法,下面这篇文章主要给大家介绍了关于利用java、js或mysql计算高德地图中两坐标之间距离的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-10-10
  • java实现支付宝支付接口的调用

    java实现支付宝支付接口的调用

    本文主要介绍了java实现支付宝支付接口的调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 剑指Offer之Java算法习题精讲数组与字符和等差数列

    剑指Offer之Java算法习题精讲数组与字符和等差数列

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • IntelliJ IDEA新版本中Maven子模块不显示的解决方案

    IntelliJ IDEA新版本中Maven子模块不显示的解决方案

    在使用IntelliJ IDEA 2024版本开发Maven多模块项目时,我发现一个令人困惑的现象,父模块的子模块未在右侧 Maven 工具窗口中显示,仅显示父模块名称,而此前2021版本中,父模块和子模块均能正常显示,所以本文给大家介绍了IntelliJ IDEA新版本中Maven子模块不显示的解决方案
    2025-05-05
  • java基础-给出一个随机字符串,判断有多少字母?多少数字?

    java基础-给出一个随机字符串,判断有多少字母?多少数字?

    这篇文章主要介绍了java基础-给出一个随机字符串,判断有多少字母?多少数字?文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • windows系统上如何进行maven安装和配置方式

    windows系统上如何进行maven安装和配置方式

    这篇文章主要介绍了windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • @MapperScan和@ComponentScan一块使用导致冲突的解决

    @MapperScan和@ComponentScan一块使用导致冲突的解决

    这篇文章主要介绍了@MapperScan和@ComponentScan一块使用导致冲突的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论