Java SpringBoot详解集成以及配置Swagger流程

作者:龍弟-idea 时间:2023-10-06 03:10:12 

一、swagge简介

前后端分离:

后端︰后端控制层,服务层,数据访问层【后端团队】

前端:前端控制层,视图层【前端团队】

前后端通过API进行交互

前后端相对独立且松耦合

产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发

解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险

前后端分离: 前端测试后端接口:postman
后端提供接口,需要实时更新最新的消息及改动!

Swagger

  • 号称世界上最流行的API框架

  • Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新

  • 直接运行,在线测试API

  • 支持多种语言 (如:Java,PHP等)

  • 官网:API Documentation & Design Tools for Teams | Swagger

Java SpringBoot详解集成以及配置Swagger流程

二、SpringBoot集成Swagger

1、新建一个SpringBoot-web项目

2、添加Maven依赖


<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>

3、编写HelloController,测试确保运行成功!

Java SpringBoot详解集成以及配置Swagger流程

4、要使用Swagger,我们需要编写一个配置类-SwaggerConfig来配置 Swagger


@Configuration
@EnableSwagger2        //开启Swagger2
public class SwaggerConfig {

}

5.访问测试 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

Java SpringBoot详解集成以及配置Swagger流程

三、配置Swagger

1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger。


//配置了Swagger的Docket的bean实例
   @Bean
   public Docket docket(){
       return new Docket(DocumentationType.SWAGGER_2);

}

2、可以通过apiInfo()属性配置文档信息


   //配置文档信息
   private ApiInfo apiInfo() {
       Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "联系人邮箱");
       return new ApiInfo(
               "龍弟的Swagger学习文档", // 标题
               "学习演示如何配置Swagger", // 描述
               "v1.0", // 版本
               "https://blog.csdn.net/weixin_48838340", // 组织链接
               contact, // 联系人信息
               "Apach 2.0 许可", // 许可
               "许可链接", // 许可连接
               new ArrayList<>()// 扩展
       );
   }
}

3、Docket 实例关联上 apiInfo()


   @Bean
   public Docket docket(){
       return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
   }

4.重启项目

Java SpringBoot详解集成以及配置Swagger流程

四、配置扫描接口

构建Docket时通过select()方法配置怎么扫描接口。


   //配置了Swagger的Docket的bean实例
   @Bean
   public Docket docket(){
       return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(apiInfo())
               .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                 //any() // 扫描所有,项目中的所有接口都会被扫描到
                // none() // 不扫描接口
       // withMethodAnnotation通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
       // 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
               .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
               //path()  过滤什么路径
               .paths(PathSelectors.ant("/longdi/**"))
               .build();
   };

五、配置Swagger开关

1、通过enable()方法配置是否启用swagger


   @Bean
   public Docket docket() {
       return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(apiInfo())
               .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
               .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
               .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
               // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
               .paths(PathSelectors.ant("/longdi/**"))
               .build();
   }

2.如何动态配置当项目处于test、dev环境时显示swagger


   @Bean
   public Docket docket(Environment environment) {
       // 设置要显示swagger的环境
       Profiles of = Profiles.of("dev", "test");
       // 判断当前是否处于该环境
       // 通过 enable() 接收此参数判断是否要显示
       boolean b = environment.acceptsProfiles(of);

return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(apiInfo())
               .enable(b) //配置是否启用Swagger,如果是false,在浏览器将无法访问
               .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
               .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
               // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
               .paths(PathSelectors.ant("/longdi/**"))
               .build();
   }

六、配置API分组

1.如果没有配置分组,默认是default。通过groupName()方法即可配置分组:


   @Bean
   public Docket docket1(Environment environment) {
       return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
               .groupName("A") ;// 配置分组
       // 省略配置....
   }

2.配置多个分组只需要配置多个docket即可

Java SpringBoot详解集成以及配置Swagger流程

3.重启看到下面效果

Java SpringBoot详解集成以及配置Swagger流程

七、实体配置

1.新建一个实体类

@ApiModel为类添加注释

@ApiModelProperty为类属性添加注释

Java SpringBoot详解集成以及配置Swagger流程

2.只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:


   //只要我们的接口中,返回值中存在实体类,它就会被扫描到Swagger中
   @PostMapping(value="/user")
   public User getUser(){
       return new User();
   }

3.查看效果

Java SpringBoot详解集成以及配置Swagger流程

4.可以给请求的接口配置一些注释


   //Operation接口,不是放在类上的,是方法
   @ApiOperation("龍弟的接口")
   @GetMapping("/hello2")
   public String kuang(@ApiParam("这个名字会被返回")String username){
       return "hello"+username;
   }

Java SpringBoot详解集成以及配置Swagger流程

八、总结:

1.我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息

2接口文档实时更新
3.可以在线测试

Swagger是一个优秀的工具,几乎所有大公司都有使用它

【注意点】在正式发布的时候,需要关闭Swagger! 因为出于安全考虑,同时节省运行的内存!

来源:https://blog.csdn.net/weixin_48838340/article/details/120706190

标签:Java,SpringBoot,Swagger,集成,配置
0
投稿

猜你喜欢

  • jdk15的安装与配置全过程记录

    2023-01-06 05:45:10
  • 在C#中调用VBScript、javascript等脚本的实现代码

    2022-09-25 13:52:56
  • Spring Boot + Mybatis多数据源和动态数据源配置方法

    2023-02-16 17:15:31
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍

    2022-12-28 05:22:15
  • C#快速实现IList非泛型类接口的自定义类作为数据源

    2022-10-09 20:28:24
  • Android 判断SIM卡属于哪个移动运营商详解及实例

    2023-08-25 15:29:39
  • Android 基于百度语音的语音交互功能(推荐)

    2021-08-22 01:26:38
  • Java算法实战之排一亿个随机数

    2022-11-22 02:47:26
  • springboot整合token的实现代码

    2023-11-10 19:02:03
  • java IO流 之 输入流 InputString()的使用

    2023-08-22 07:44:31
  • hadoop实现grep示例分享

    2023-12-24 05:31:04
  • Java图像之自定义角度旋转(实例)

    2023-10-07 21:04:28
  • Java设计模式之抽象工厂模式浅析讲解

    2022-08-08 18:26:47
  • Android通讯录开发之删除功能的实现方法

    2021-07-06 10:43:53
  • 浅析JDK12的五大重要新特性(推荐)

    2023-01-28 19:09:24
  • SpringCloud中的Consul详解

    2023-05-26 04:56:41
  • Android Compose实现联系人列表流程

    2023-09-25 00:50:04
  • C++强制类型转换的四种方式

    2023-03-29 04:00:49
  • Android编辑框EditText与焦点变更监视器及文本变化监视器实现流程详解

    2021-06-21 04:48:14
  • SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题

    2022-10-31 16:56:24
  • asp之家 软件编程 m.aspxhome.com