1、導入Maven依賴
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency>
2、配置application.yml
swagger:
enable: true
application-name: xxx系統API說明
application-version: 1.0
application-description: springfox swagger 3.0整合Demo
try-host: http://localhost:${server.port}
3、添加實體類接收swagger配置信息
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties("swagger") @Data @AllArgsConstructor @NoArgsConstructor public class SwaggerProperties { /** * 是否開啟swagger,生產環境一般關閉,所以這里定義一個變量 */ private Boolean enable; /** * 項目應用名 */ private String applicationName; /** * 項目版本信息 */ private String applicationVersion; /** * 項目描述信息 */ private String applicationDescription; /** * 接口調試地址 */ private String tryHost; }
4、Swagger配置類設置
@Configuration public class SwaggerConfig implements WebMvcConfigurer { private final SwaggerProperties swaggerProperties; public SwaggerConfig(SwaggerProperties swaggerProperties) { this.swaggerProperties = swaggerProperties; } //可以創建多個Docket對象,添加進@Bean中 並使用 .groupName("張*") 添加多個分組,前提是名稱不要重復 @Bean public Docket createRestApi() { return new Docket( DocumentationType.OAS_30) .pathMapping("/") .groupName("張*") // 定義是否開啟swagger,false為關閉,可以通過變量控制 .enable(swaggerProperties.getEnable()) // 將api的元信息設置為包含在json ResourceListing響應中。 .apiInfo(apiInfo()) // 接口調試地址 .host(swaggerProperties.getTryHost()) // 選擇哪些接口作為swagger的doc發布 .select() //RequestHandlerSelectors 配置要掃描接口的方式 //RequestHandlerSelectors.basePackage("") //指定要掃描的包 //any() 掃描全部 //none() 都不掃描 //.withClassAnnotation(RestController.class) 掃描類上的注解,比如這個只會掃描類上有RestController注解的類 //.withMethodAnnotation(GetMapping.class) 掃描方法上的注解 .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build() // 支持的通訊協議集合 .protocols(newHashSet("https", "http")); } /** * API 頁面上半部分展示信息 * 可以new ApiInfo對象,到ApiInfo里面去看源碼 */ private ApiInfo apiInfo() { return new ApiInfoBuilder().title(swaggerProperties.getApplicationName() + " Api Doc") .description(swaggerProperties.getApplicationDescription()) .contact(new Contact("zhang", "com.z.cn", "1348359420@qq.com")) .version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion()) .build(); } @SafeVarargs private final <T> Set<T> newHashSet(T... ts) { if (ts.length > 0) { return new LinkedHashSet<>(Arrays.asList(ts)); } return null; } }
5、訪問API地址
http://localhost:8080/swagger-ui/
springfox-swagger-ui-3.0.0.jar 下 META-INF.resources.webjars.springfox-swagger-ui
6、實體類注解說明
@Data @AllArgsConstructor @NoArgsConstructor @ApiModel("用戶實體類") public class User { @ApiModelProperty("主鍵") private int id; @ApiModelProperty("登錄賬號") private String login; @ApiModelProperty("密碼") private String password; @ApiModelProperty("角色權限") private String role; }
7、Controller注解說明
//方法說明注解 @ApiOperation @ApiOperation("獲取全部用戶") @RequestMapping("user/getAll") @ResponseBody public List<User> getAll(){ return userService.selectAll(); }
8、更多操作參考CSDN
Swagger 3.0配置整合使用教程_南伯基尼-CSDN博客