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
二、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,测试确保运行成功!
4、要使用Swagger,我们需要编写一个配置类-SwaggerConfig来配置 Swagger
@Configuration
@EnableSwagger2 //开启Swagger2
public class SwaggerConfig {
}
5.访问测试 :http://localhost:8081/swagger-ui.html,可以看到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.重启项目
四、配置扫描接口
构建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即可
3.重启看到下面效果
七、实体配置
1.新建一个实体类
@ApiModel为类添加注释
@ApiModelProperty为类属性添加注释
2.只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:
//只要我们的接口中,返回值中存在实体类,它就会被扫描到Swagger中
@PostMapping(value="/user")
public User getUser(){
return new User();
}
3.查看效果
4.可以给请求的接口配置一些注释
//Operation接口,不是放在类上的,是方法
@ApiOperation("龍弟的接口")
@GetMapping("/hello2")
public String kuang(@ApiParam("这个名字会被返回")String username){
return "hello"+username;
}
八、总结:
1.我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息
2接口文档实时更新
3.可以在线测试
Swagger是一个优秀的工具,几乎所有大公司都有使用它
【注意点】在正式发布的时候,需要关闭Swagger! 因为出于安全考虑,同时节省运行的内存!
来源:https://blog.csdn.net/weixin_48838340/article/details/120706190


猜你喜欢
- 目录1、简介2、适用情况3、mybatis-plus前期准备(工程将以 H2 作为默认数据库进行演示)1、使用 Spring Initial
- 记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后
- 一、什么是Java事务通常的观念认为,事务仅与数据库相关。  
- 仿水波纹流球进度条控制器,Android实现高端大气的主流特效,供大家参考,具体内容如下效果图:CircleView这里主要是实现中心圆以及
- 本文实例汇总了Java性能优化技巧。分享给大家供大家参考。具体分析如下:这里参考了些书籍,网络资源整理出来,适合于大多数Java应用在JAV
- using System.IO;using System.IO.Compression;using System.Web;using Sys
- 一、什么是外观模式定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。外观模式组成:Facade:负责子系统的的封装调
- Intellij是进行scala开发的一个非常好用的工具,可以非常轻松查看scala源码,当然用它来开发Java也是很爽的,之前一直在用sc
- 目录1、表达式目录树2、构建表达式目录树3、使用Expression来进行不同对象的相同名字的属性映射4、表达式目录树构建SQL删选&nbs
- 在android开发中,通常使用xml格式来描述布局文件。就目前而言,熟悉android布局及美化的人员少之又少,出现了严重的断层。大部分企
- 分转元private String fenToYuan(String amount){ NumberFormat format
- IDEA全局替换通过快捷键 Ctrl+Shift+r 或这点击 Edit 》Find 》Replace In Path有些IDEA版本按了快
- 布局管理器在java.awt 包中提供了5中常用的布局管理器,分别式FlowLayout(流式布局管理器)、BorderLayout(边界布
- 1、添加android support包因为上面的几个类都是在android support包中才提供,我们先添加包。在Eclipse-&g
- mybatisplus支持多种主键生成策略,默认采用认 ID_WORKER 即雪花算法雪花算法snowflflake是Twitter开源的分
- 前言本文主要给大家介绍了关于C/C++混合编程extern “C”使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介
- 项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来。1,新建.NET WebService。只在
- 1.Spring bean组件 ”默认为单例模式scope=“singleton, 运行JavaApplication容器启动时自动创建对象
- 前言:java5为我们提供了Callable和Future,使我们可以很容易的完成异步任务结果的获取,但是通过Future的get获取异步任
- 一、先看结果1.1创造营2020撑腰榜前三甲创造营2020撑腰榜前三名分别是 希林娜依·高、陈卓璇 、郑乃馨>>>df1[