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
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
jdk15的安装与配置全过程记录
![](https://img.aspxhome.com/file/2023/6/85516_0s.jpg)
在C#中调用VBScript、javascript等脚本的实现代码
Spring Boot + Mybatis多数据源和动态数据源配置方法
C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍
C#快速实现IList非泛型类接口的自定义类作为数据源
![](https://img.aspxhome.com/file/2023/1/98221_0s.jpg)
Android 判断SIM卡属于哪个移动运营商详解及实例
Android 基于百度语音的语音交互功能(推荐)
![](https://img.aspxhome.com/file/2023/2/90152_0s.gif)
Java算法实战之排一亿个随机数
![](https://img.aspxhome.com/file/2023/4/60694_0s.png)
springboot整合token的实现代码
java IO流 之 输入流 InputString()的使用
hadoop实现grep示例分享
Java图像之自定义角度旋转(实例)
Java设计模式之抽象工厂模式浅析讲解
Android通讯录开发之删除功能的实现方法
![](https://img.aspxhome.com/file/2023/1/116031_0s.png)
浅析JDK12的五大重要新特性(推荐)
SpringCloud中的Consul详解
![](https://img.aspxhome.com/file/2023/7/128867_0s.png)
Android Compose实现联系人列表流程
![](https://img.aspxhome.com/file/2023/7/96767_0s.gif)
C++强制类型转换的四种方式
Android编辑框EditText与焦点变更监视器及文本变化监视器实现流程详解
![](https://img.aspxhome.com/file/2023/6/98676_0s.png)
SpringBoot2.0解决Long型数据转换成json格式时丢失精度问题
![](https://img.aspxhome.com/file/2023/1/61521_0s.png)