Java SpringBoot詳解集成以及配置Swagger流程
一、swagge簡介
前后端分離:
后端︰后端控制層,服務(wù)層,數(shù)據(jù)訪問層【后端團隊】
前端:前端控制層,視圖層【前端團隊】
前后端通過API進行交互
前后端相對獨立且松耦合
產(chǎn)生問題:前后端集成,前端或者后端無法做到“及時協(xié)商,盡早解決”,最終導(dǎo)致問題集中爆發(fā)
解決方法:首先定義schema [ 計劃的提綱 ],并實時跟蹤最新的API,降低集成風(fēng)險
前后端分離: 前端測試后端接口:postman
后端提供接口,需要實時更新最新的消息及改動!
Swagger
- 號稱世界上最流行的API框架
- Restful Api 文檔在線自動生成器 => API 文檔 與API 定義同步更新
- 直接運行,在線測試API
- 支持多種語言 (如:Java,PHP等)
- 官網(wǎng):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", "聯(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<>()// 擴展
);
}
}
3、Docket 實例關(guān)聯(lián)上 apiInfo()
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
4.重啟項目

四、配置掃描接口
構(gòu)建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開關(guān)
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.如何動態(tài)配置當(dāng)項目處于test、dev環(huán)境時顯示swagger
@Bean
public Docket docket(Environment environment) {
// 設(shè)置要顯示swagger的環(huán)境
Profiles of = Profiles.of("dev", "test");
// 判斷當(dāng)前是否處于該環(huán)境
// 通過 enable() 接收此參數(shù)判斷是否要顯示
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;
}

八、總結(jié):
1.我們可以通過Swagger給一些比較難理解的屬性或者接口,增加注釋信息
2接口文檔實時更新
3.可以在線測試
Swagger是一個優(yōu)秀的工具,幾乎所有大公司都有使用它
【注意點】在正式發(fā)布的時候,需要關(guān)閉Swagger! 因為出于安全考慮,同時節(jié)省運行的內(nèi)存!
到此這篇關(guān)于Java SpringBoot詳解集成以及配置Swagger流程的文章就介紹到這了,更多相關(guān)Java SpringBoot Swagger內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot優(yōu)化接口響應(yīng)時間的九個技巧
在實際開發(fā)中,提升接口響應(yīng)速度是一件挺重要的事,特別是在面臨大量用戶請求的時候,本文為大家整理了9個SpringBoot優(yōu)化接口響應(yīng)時間的技巧,希望對大家有所幫助2024-01-01
springboot整合mybatis plus與druid詳情
這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的下伙伴可以參考一下2022-09-09
SpringBoot在自定義類中調(diào)用service層等Spring其他層操作
這篇文章主要介紹了SpringBoot在自定義類中調(diào)用service層等Spring其他層操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06

