swagger多包扫描"/>
swagger多包扫描
swagger多包扫描
在项目中swagger的接口文档使用的还是很方便的,swagger有很多中扫描接口的方式,可以自行的配置
但是swagger配置通过包扫描的方式时,而当我们想要扫描多个包的时候,就发现,swagger给的api当中只有一个string参数,就很不方便
所以自行寻找了一些配置多包扫描的方式
首先需要导入guava依赖包
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.1-jre</version>
</dependency>
然后开始配置
import com.googlemon.base.Function;
import com.googlemon.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@Beanpublic Docket createRestApi(){return new Docket(DocumentationType.OAS_30)// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息).apiInfo(apiInfo())// 设置哪些接口暴露给Swagger展示.select()// 扫描指定包的接口// 只支持一个包路径//.apis(RequestHandlerSelectors.basePackage("com.xxx.xxx"))// 多包扫描.apis(basePackage("com.xxx.xxx1", "com.xxx.xxx2"))// 扫描所有 .apis(RequestHandlerSelectors.any()).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();}
更多推荐
swagger多包扫描
发布评论