Spring Boot內建Swagger
1、建立一個springboot的Web項目
2、導入依賴
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
3、建立SwaggerConfig配置檔案
@Configuration //表明這是一個配置類
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
}
4、配置 Swagger 資訊
4.1 配置Swagger的Docket的Bean執行個體
@Configuration //表明這是一個配置類
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
/**
* 1、配置了Swagger的Docket的Bean執行個體
*/
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
}
/**
* 2、配置Swagger的ApiInfo資訊
*/
private ApiInfo apiInfo(){
//作者資訊
Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
return new ApiInfo(
"Tenton的SwaggerApi文檔", //文檔标題
"有理想,隻要肯奮鬥,終将會到達", //文檔描述
"v1.0", //文檔版本
"https://blog.csdn.net/Tenton", //作者網站位址
contact, //作者資訊
"Apache 2.0", //許可證
"http://www.apache.org/licenses/LICENSE-2.0", //許可證Uri
new ArrayList());
}
}
4.2 配置掃描接口
@Configuration //表明這是一個配置類
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
/**
* 1、配置了Swagger的Docket的Bean執行個體
*/
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
/**
*
* enable 是否啟動Swagger,如果為False,則swagger不能在浏覽器中通路
*/
.enable(true)
.select()
/**
* RequestHandlerSelectors 配置要掃描接口的方法
* basePackage("com.tenton.controller") 指定要掃描的包:com.tenton.controller 一般用此方法
* any(): 掃描全部
* none(): 都不掃描
* withClassAnnotation(GetMapping.class) : 掃描類上的注解,參數是一個注解的反射對象
* withMethodAnnotation(RestController.class) : 掃描方法上的注解
*/
.apis(RequestHandlerSelectors.basePackage("com.tenton.controller"))
/**
* paths() 過濾什麼路徑
* ant:指定路徑 一般用此方法
* any:過濾全部
* none:全部不過濾
* regex:按照正規表達式來過濾
*/
.paths(PathSelectors.ant("/tenton/**"))
.build();
}
/**
* 2、配置Swagger的ApiInfo資訊
*/
private ApiInfo apiInfo(){
//作者資訊
Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
return new ApiInfo(
"Tenton的SwaggerApi文檔",
"有理想,隻要肯奮鬥,終将會到達",
"v1.0",
"https://blog.csdn.net/Tenton",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
4.3 設定要顯示的Swagger環境 ,隻允許開發(dev)和測試(test) 顯示
@Configuration //表明這是一個配置類
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
/**
* 1、配置了Swagger的Docket的Bean執行個體
*/
@Bean
public Docket docket(Environment environment){
/**
* 3、設定要顯示的Swagger環境
*/
Profiles profiles = Profiles.of("dev","test");
/**
* 擷取項目的環境
* 通過environment.acceptsProfiles判斷是否處在自己設定的環境中
*/
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
/**
*
* enable 是否啟動Swagger,如果為False,則swagger不能在浏覽器中通路
* 監聽環境配置
*/
.enable(flag)
.select()
/**
* RequestHandlerSelectors 配置要掃描接口的方法
* basePackage("com.tenton.controller") 指定要掃描的包:com.tenton.controller 一般用此方法
* any(): 掃描全部
* none(): 都不掃描
* withClassAnnotation(GetMapping.class) : 掃描類上的注解,參數是一個注解的反射對象
* withMethodAnnotation(RestController.class) : 掃描方法上的注解
*/
//.apis(RequestHandlerSelectors.basePackage("com.tenton.controller"))
/**
* paths() 過濾什麼路徑
* ant 一般用此方法
*/
//.paths(PathSelectors.ant("/tenton/**"))
.build();
}
/**
* 2、配置Swagger的ApiInfo資訊
*/
private ApiInfo apiInfo(){
//作者資訊
Contact contact = new Contact("Tenton", "https://blog.csdn.net/Tenton", "[email protected]");
return new ApiInfo(
"Tenton的SwaggerApi文檔",
"有理想,隻要肯奮鬥,終将會到達",
"v1.0",
"https://blog.csdn.net/Tenton",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
4.4 配置相應配置檔案
application-dev.properties
#設定端口
server.port=8081
application-test.properties
#設定端口
server.port=8082
application.properties
# 目前項目環境為開發環境
spring.profiles.active=dev
4.5 配置API分組
@Configuration //表明這是一個配置類
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
/**
* 4、配置API分組
*/
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("Java");//組名
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("SpringBoot");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("SSM");
}
}

配置實體類
@ApiModel("使用者實體")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@ApiModelProperty("姓名")
private String userName;
@ApiModelProperty("密碼")
private String password;
}
控制類UserController
@Api(tags = "使用者控制類接口")
@Controller
public class UserController {
@ApiOperation("擷取使用者的接口")
@PostMapping("/user")
public User getUser(User user){
return user;
}
}
Swagger常用注解
Swagger的所有注解定義在io.swagger.annotations包下
Swagger注解 | 簡單說明 |
---|---|
@Api(tags = “xxx子產品說明”) | 作用在子產品類上 |
@ApiOperation(“xxx接口說明”) | 作用在接口方法上 |
@ApiModel(“xxxPOJO說明”) | 作用在模型類上:如VO、BO |
@ApiModelProperty(value = “xxx屬性說明”,hidden = true) | 作用在類方法和屬性上,hidden設定為true可以隐藏該屬性 |
@ApiParam(“xxx參數說明”) | 作用在參數、方法和字段上,類似@ApiModelProperty |