swagger多包扫描

编程入门 行业动态 更新时间:2024-10-06 01:45:50

<a href=https://www.elefans.com/category/jswz/34/1759908.html style=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多包扫描

本文发布于:2024-02-28 08:25:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1769105.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:swagger

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!