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