Spring Boot集成swagger
Spring Boot集成swagger
1.添加maven依赖
<!--原生swagger-ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
2.添加properties
#是否开启swagger
swagger.enable=true
#swagger扫描路径 ;
#swagger.apis.basePackage=
3.添加SwaggerConf配置类
/**
* properties配置类
*
* @author meitinghe
*/
@Component
@RefreshScope
@Data
public class BeanConfig {
/**
* 是否开启swagger
*/
@Value("${swagger.enable:false}")
private Boolean enableSwagger;
/**
* swagger扫描路径 ;
*/
@Value("${swagger.apis.basePackage:cn.com.mei.api}")
private String basePackage;
}
/**
* @author meitinghe
*/
@Configuration
public class SwaggerConf {
@Autowired
private BeanConfig beanConfig;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(beanConfig.getEnableSwagger())
.apiInfo(apiInfo())
.select()
// 自行修改为自己的包路径
.apis(basePackage(beanConfig.getBasePackage()))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("api文档")
.description("restful 风格接口")
//服务条款网址
//.termsOfServiceUrl("")
.version("1.0")
//.contact(new Contact("hello", "url", "email"))
.build();
}
/**
* 重写basePackage方法,使能够实现多包访问,复制贴上去
*/
public static Predicate<RequestHandler> basePackage(final String basePackage) {
return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
}
private static Function<Class<?>, Boolean> handlerPackage(final String basePackage) {
return input -> {
// 循环判断匹配
for (String strPackage : basePackage.split(";")) {
boolean isMatch = input.getPackage().getName().startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
}
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
}
4.启动类添加@EnableSwagger2
注解
5.启动springboot服务
浏览器输入服务地址访问接口
http://127.0.0.1:8080/swagger-ui.html