Swagger
swagger集成springboot
-
创建一个springboot web项目;
-
引入相关依赖
<!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency>
-
编写swagger配置类
package com.xyj.config; import org.springframework.context.annotation.Configuration; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2//开启swagger public class SwaggerConfig { }
-
启动项目,访问Swagger UI
配置swagger
swagger的bean实例Docket:
package com.xyj.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import static springfox.documentation.service.ApiInfo.DEFAULT_CONTACT;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
//配置了swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
}
//配置Swagger的基本信息
private ApiInfo apiInfo(){
Contact contact = new Contact("xyj", "https://www.kuangstudy.com/course?cid=1", "xyj@qq.com");
return new ApiInfo("xyj的SwaggerAPI文档", "别睡了", "v1.0", "https://www.kuangstudy.com/course?cid=1",
contact, "Apache 2.0", "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList<>());
}
}
Swagger配置扫描接口
//配置了swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
//RequestHandlerSelectors配置扫描包的方式
//basePackage:指定要扫描的包
//any():全部扫描
//none():全部不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.xyj.controller"))
//过滤什么路径
.paths(PathSelectors.ant("/xyj/**"))
.build();
}
配置是否启动Swagger
//配置了swagger的Docket的bean实例
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
//是否启用Swagger,如果为false,则Swagger不能在浏览器中访问
.enable(false)
.select()
//RequestHandlerSelectors配置扫描包的方式
//basePackage:指定要扫描的包
//any():全部扫描
//none():全部不扫描
//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
//withMethodAnnotation:扫描方法上的注解
// .apis(RequestHandlerSelectors.basePackage("com.xyj.controller"))
//过滤什么路径
// .paths(PathSelectors.ant("/xyj/**"))
.build();
}
配置API文档的分组
.groupName("orange")
如何配置多个Docket分组
@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");
}
总结
- 我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释消息
- 接口文档实时更新
- 可以在线测试