swagger多包扫描
import com.google.common.base.Function;
import com.google.common.base.Optional;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import java.util.function.Predicate;
@Configuration
public class SwaggerConfig
@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.OAS_30)
// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
.apiInfo(apiInfo())
// 设置哪些接口暴露给Swagger展示
.select()
// 扫描指定包的接口
// 只支持一个包路径
//.apis((""))
// 多包扫描
.apis(basePackage(".xxx1", ".xxx2"))
// 扫描所有 .apis(())
.paths(PathSelectors.any())
.build();
}
private static Predicate<RequestHandler> basePackage(String... basePackages) {
return input -> declaringClass(input).transform(handlerPackage(basePackages)).or(true);
}
private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
return Optional.fromNullable(input.declaringClass());
}
private static Function<Class<?>, Boolean> handlerPackage(String[] basePackage) {
return input -> {
// 循环判断匹配
for (String strPackage : basePackage) {
boolean isMatch = input.getPackage().getName().startsWith(strPackage);
if (isMatch) {
return true;
}
}
return false;
};
}
/**
* 添加摘要信息
*/
private ApiInfo apiInfo() {
// 用ApiInfoBuilder进行定制
return new ApiInfoBuilder()
// 设置标题
.title("标题:xxx系统_接口文档")
// 描述
.description("描述:用于管理xxxxx信息,具体包括XXX,XXX模块...")
// 作者信息
.contact(new Contact("xxxx", null, null))
// 版本
.version("版本号:" + "1.0")
.build();
}