Java SpringBoot詳解集成以及配置Swagger流程
一、swagge簡(jiǎn)介
前后端分離:
后端︰后端控制層,服務(wù)層,數(shù)據(jù)訪問(wèn)層【后端團(tuán)隊(duì)】
前端:前端控制層,視圖層【前端團(tuán)隊(duì)】
前后端通過(guò)API進(jìn)行交互
前后端相對(duì)獨(dú)立且松耦合
產(chǎn)生問(wèn)題:前后端集成,前端或者后端無(wú)法做到“及時(shí)協(xié)商,盡早解決”,最終導(dǎo)致問(wèn)題集中爆發(fā)
解決方法:首先定義schema [ 計(jì)劃的提綱 ],并實(shí)時(shí)跟蹤最新的API,降低集成風(fēng)險(xiǎn)
前后端分離: 前端測(cè)試后端接口:postman
后端提供接口,需要實(shí)時(shí)更新最新的消息及改動(dòng)!
Swagger
- 號(hào)稱世界上最流行的API框架
- Restful Api 文檔在線自動(dòng)生成器 => API 文檔 與API 定義同步更新
- 直接運(yùn)行,在線測(cè)試API
- 支持多種語(yǔ)言 (如:Java,PHP等)
- 官網(wǎng):API Documentation & Design Tools for Teams | Swagger

二、SpringBoot集成Swagger
1、新建一個(gè)SpringBoot-web項(xiàng)目
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、編寫(xiě)HelloController,測(cè)試確保運(yùn)行成功!

4、要使用Swagger,我們需要編寫(xiě)一個(gè)配置類(lèi)-SwaggerConfig來(lái)配置 Swagger
@Configuration
@EnableSwagger2 //開(kāi)啟Swagger2
public class SwaggerConfig {
}
5.訪問(wèn)測(cè)試 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

三、配置Swagger
1、Swagger實(shí)例Bean是Docket,所以通過(guò)配置Docket實(shí)例來(lái)配置Swaggger。
//配置了Swagger的Docket的bean實(shí)例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2);
}
2、可以通過(guò)apiInfo()屬性配置文檔信息
//配置文檔信息
private ApiInfo apiInfo() {
Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "聯(lián)系人郵箱");
return new ApiInfo(
"龍弟的Swagger學(xué)習(xí)文檔", // 標(biāo)題
"學(xué)習(xí)演示如何配置Swagger", // 描述
"v1.0", // 版本
"https://blog.csdn.net/weixin_48838340", // 組織鏈接
contact, // 聯(lián)系人信息
"Apach 2.0 許可", // 許可
"許可鏈接", // 許可連接
new ArrayList<>()// 擴(kuò)展
);
}
}
3、Docket 實(shí)例關(guān)聯(lián)上 apiInfo()
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
4.重啟項(xiàng)目

四、配置掃描接口
構(gòu)建Docket時(shí)通過(guò)select()方法配置怎么掃描接口。
//配置了Swagger的Docket的bean實(shí)例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
//any() // 掃描所有,項(xiàng)目中的所有接口都會(huì)被掃描到
// none() // 不掃描接口
// withMethodAnnotation通過(guò)方法上的注解掃描,如withMethodAnnotation(GetMapping.class)只掃描get請(qǐng)求
// 通過(guò)類(lèi)上的注解掃描,如.withClassAnnotation(Controller.class)只掃描有controller注解的類(lèi)中的接口
.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
//path() 過(guò)濾什么路徑
.paths(PathSelectors.ant("/longdi/**"))
.build();
};
五、配置Swagger開(kāi)關(guān)
1、通過(guò)enable()方法配置是否啟用swagger
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(false) //配置是否啟用Swagger,如果是false,在瀏覽器將無(wú)法訪問(wèn)
.select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
// 配置如何通過(guò)path過(guò)濾,即這里只掃描請(qǐng)求以/longdi開(kāi)頭的接口
.paths(PathSelectors.ant("/longdi/**"))
.build();
}
2.如何動(dòng)態(tài)配置當(dāng)項(xiàng)目處于test、dev環(huán)境時(shí)顯示swagger
@Bean
public Docket docket(Environment environment) {
// 設(shè)置要顯示swagger的環(huán)境
Profiles of = Profiles.of("dev", "test");
// 判斷當(dāng)前是否處于該環(huán)境
// 通過(guò) enable() 接收此參數(shù)判斷是否要顯示
boolean b = environment.acceptsProfiles(of);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(b) //配置是否啟用Swagger,如果是false,在瀏覽器將無(wú)法訪問(wèn)
.select()// 通過(guò).select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
.apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
// 配置如何通過(guò)path過(guò)濾,即這里只掃描請(qǐng)求以/longdi開(kāi)頭的接口
.paths(PathSelectors.ant("/longdi/**"))
.build();
}
六、配置API分組
1.如果沒(méi)有配置分組,默認(rèn)是default。通過(guò)groupName()方法即可配置分組:
@Bean
public Docket docket1(Environment environment) {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.groupName("A") ;// 配置分組
// 省略配置....
}
2.配置多個(gè)分組只需要配置多個(gè)docket即可

3.重啟看到下面效果

七、實(shí)體配置
1.新建一個(gè)實(shí)體類(lèi)
@ApiModel為類(lèi)添加注釋
@ApiModelProperty為類(lèi)屬性添加注釋

2.只要這個(gè)實(shí)體在請(qǐng)求接口的返回值上(即使是泛型),都能映射到實(shí)體項(xiàng)中:
//只要我們的接口中,返回值中存在實(shí)體類(lèi),它就會(huì)被掃描到Swagger中
@PostMapping(value="/user")
public User getUser(){
return new User();
}
3.查看效果

4.可以給請(qǐng)求的接口配置一些注釋
//Operation接口,不是放在類(lèi)上的,是方法
@ApiOperation("龍弟的接口")
@GetMapping("/hello2")
public String kuang(@ApiParam("這個(gè)名字會(huì)被返回")String username){
return "hello"+username;
}

八、總結(jié):
1.我們可以通過(guò)Swagger給一些比較難理解的屬性或者接口,增加注釋信息
2接口文檔實(shí)時(shí)更新
3.可以在線測(cè)試
Swagger是一個(gè)優(yōu)秀的工具,幾乎所有大公司都有使用它
【注意點(diǎn)】在正式發(fā)布的時(shí)候,需要關(guān)閉Swagger! 因?yàn)槌鲇诎踩紤],同時(shí)節(jié)省運(yùn)行的內(nèi)存!
到此這篇關(guān)于Java SpringBoot詳解集成以及配置Swagger流程的文章就介紹到這了,更多相關(guān)Java SpringBoot Swagger內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用resty Quartz執(zhí)行定時(shí)任務(wù)的配置方法
這篇文章主要為大家介紹了使用resty?Quartz來(lái)執(zhí)行定時(shí)任務(wù)的配置方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
SpringBoot輕松實(shí)現(xiàn)ip解析(含源碼)
IP地址一般以數(shù)字形式表示,如192.168.0.1,IP解析是將這個(gè)數(shù)字IP轉(zhuǎn)換為包含地區(qū)、城市、運(yùn)營(yíng)商等信息的字符串形式,如“廣東省深圳市 電信”,這樣更方便人理解和使用,本文給大家介紹了SpringBoot如何輕松實(shí)現(xiàn)ip解析,需要的朋友可以參考下2023-10-10
SpringBoot集成Spring Security的方法
Spring security,是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問(wèn)控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段
這篇文章主要介紹了Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java基礎(chǔ)之位運(yùn)算知識(shí)總結(jié)
最近接觸到了java位運(yùn)算,之前對(duì)位運(yùn)算的了解僅僅停留在表現(xiàn)結(jié)果上,乘2除以2,對(duì)背后的原理并不了解,現(xiàn)在學(xué)習(xí)記錄一下,需要的朋友可以參考下2021-05-05
Java設(shè)計(jì)模式之命令模式詳細(xì)解析
這篇文章主要介紹了Java設(shè)計(jì)模式之命令模式詳細(xì)解析,命令模式將請(qǐng)求封裝成對(duì)象,以便使用不同的請(qǐng)求、隊(duì)列或者日志來(lái)參數(shù)化其他對(duì)象,同時(shí)也支持可撤銷(xiāo)的操作,需要的朋友可以參考下2024-01-01
淺談Spring Data JPA與MyBatisPlus的比較
本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較2024-08-08
ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解
這篇文章主要為大家介紹了ImportBeanDefinitionRegistrar手動(dòng)控制BeanDefinition創(chuàng)建注冊(cè)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

