13. SpringBoot-swagger
13.1 導入相關依賴
<dependencies>
<!-- springfox-boot-starter
配置類上使用的開啟注解為:@EnableOpenApi
訪問路徑:http://localhost:8080/swagger-ui/index.html
-->
<!--<dependency>-->
<!--<groupId>io.springfox</groupId>-->
<!--<artifactId>springfox-boot-starter</artifactId>-->
<!--<version>3.0.0</version>-->
<!--</dependency>-->
<!-- springfox-swagger-ui springfox-swagger2
springboot2.6.0版本不兼容 這里使用的是SpringBoot2.5.6版本
使用的注解為:@EnableSwagger2
訪問路徑:http://localhost:8080/swagger-ui.html
-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
13.2 編寫Swagger配置類
文件路徑:com--dzj-config--SwaggerConfig.java
@Configuration
@EnableSwagger2 //開啟Swagger2
public class SwaggerConfig {
// 配置swagger Docket的bean實例,可以配置多個
@Bean
public Docket docket(Environment environment) {
//設置要顯示的swagger環境
Profiles profiles = Profiles.of("dev", "test");
//通過environment.acceptsProfiles()判斷當前環境是否處於設定的環境中
boolean flag = environment.acceptsProfiles(profiles);
System.out.println("當前測試環境--->" + flag);
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(flag) //是否啟動Swagger,默認為true
.groupName("dengzj")
.select()
/*
RequestHandlerSelectors,配置要掃描接口的方式
basePackage("com.dzj.controller"):指定要掃描的包
any():掃描所有
none():不掃描
withClassAnnotation(GetMapping.class):掃描類上的注解
withMethodAnnotation(GetMapping.class):掃描方法上的注解
*/
.apis(RequestHandlerSelectors.basePackage("com.dzj.controller"))
//paths(PathSelectors.ant("/dzj/**")) 過濾請求的路徑
//.paths(PathSelectors.ant("/hello/**"))
.build();
}
//配置Swagger信息,apiInfo
private ApiInfo apiInfo() {
Contact contact = new Contact("dengzj", "https://www.cnblogs.com/aadzj/", "aadzj@qq.com");
return new ApiInfo(
"Dengzj的SwaggerApi文檔",
"認真卻不慫",
"v1.0",
"https://www.cnblogs.com/aadzj/",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
@Bean
public Docket docket1() {
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2() {
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3() {
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
}
13.3 編寫實體類
文件位置:com--dzj--pojo--User.java
@ApiModel("用戶實體類") //注釋
public class User {
@ApiModelProperty("用戶名") //注釋
public String username;
@ApiModelProperty("密碼") //注釋
public String password;
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.password = password;
}
}
13.4 編寫測試接口
文件位置:com--dzj--controller-HelloController.java
@Api(tags = "hello控制類") //注釋類名
@RestController
public class HelloController {
@ApiOperation("hello接口") //注釋接口名
@GetMapping(value = "/testHello")
public String testHello() {
return "hello";
}
// 只要我們接口中的返回值有實體類,它就會被掃描到swagger中
@ApiOperation("掃描實體類測試接口")
@PostMapping("/testUser")
public User testUser() {
return new User();
}
@ApiOperation("測試testRestful接口")
@GetMapping("/testRestful/{username}")
public String testRestful(@ApiParam("用戶名") @PathVariable("username") String username) {
return "username:" + username;
}
@ApiOperation("測試testPost接口")
@PostMapping("/testPost")
public User testPost(User user) {
return user;
}
}
13.5 編寫配置文件
-
application.properties
spring.profiles.active=dev -
application-dev.properties
-
application-pro.properties
-
application-test.properties
13.6 訪問測試

接口以及實體類信息

