Java SpringBoot詳解集成以及配置Swagger流程
一、swagge簡介
前后端分離:
后端︰后端控制層,服務(wù)層,數(shù)據(jù)訪問層【后端團隊】
前端:前端控制層,視圖層【前端團隊】
前后端通過API進行交互
前后端相對獨立且松耦合
產(chǎn)生問題:前后端集成,前端或者后端無法做到“及時協(xié)商,盡早解決”,最終導致問題集中爆發(fā)
解決方法:首先定義schema [ 計劃的提綱 ],并實時跟蹤最新的API,降低集成風險
前后端分離: 前端測試后端接口: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學習文檔", // 標題
"學習演示如何配置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)配置當項目處于test、dev環(huán)境時顯示swagger
@Bean
public Docket docket(Environment environment) {
// 設(shè)置要顯示swagger的環(huán)境
Profiles of = Profiles.of("dev", "test");
// 判斷當前是否處于該環(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)文章
使用resty Quartz執(zhí)行定時任務(wù)的配置方法
這篇文章主要為大家介紹了使用resty?Quartz來執(zhí)行定時任務(wù)的配置方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-03-03
SpringBoot集成Spring Security的方法
Spring security,是一個強大的和高度可定制的身份驗證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
Mybatis Plus select 實現(xiàn)只查詢部分字段
這篇文章主要介紹了Mybatis Plus select 實現(xiàn)只查詢部分字段的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
淺談Spring Data JPA與MyBatisPlus的比較
本文主要介紹了淺談Spring Data JPA 與 MyBatisPlus的比較2024-08-08
ImportBeanDefinitionRegistrar手動控制BeanDefinition創(chuàng)建注冊詳解
這篇文章主要為大家介紹了ImportBeanDefinitionRegistrar手動控制BeanDefinition創(chuàng)建注冊詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12

