当前位置: 代码迷 >> 综合 >> Spring boot 配置 Swagger2 就是这么简单
  详细解决方案

Spring boot 配置 Swagger2 就是这么简单

热度:25   发布时间:2024-02-10 12:00:04.0

swagger 是我一直在用的在线API 的生成文档 ,我一直觉得 非常的好用 省事
来吧 上代码

pom.xml

    <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>

Swagger2

package com.wsm.compose.compose_base.config;

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**

  • @name: Swagger2

  • @Author: wangshimin

  • @Date: 2019-08-13 14:38

  • @Description:
    */
    @Slf4j
    @Configuration
    @EnableSwagger2
    public class Swagger2 {
    @Value(" s w a g g e r . s h o w " ) p r i v a t e b o o l e a n s w a g g e r S h o w ; @ V a l u e ( " {swagger.show}")private boolean swaggerShow;@Value(" {swagger.base-package}")
    private String swaggerBasePackage;

    public Swagger2() {
    log.info("》》》》》》》》》》swagger2框架启动");
    }

    /**

    • 创建API应用
    • api() 增加API相关信息
    • 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
    • 本例采用指定扫描的包路径来定义指定要建立API的目录。
    • @return
      */
      @Bean
      public Docket api() {
      return new Docket(DocumentationType.SWAGGER_2)
      .apiInfo(apiInfo())
      .select()
      .apis(basePackage(swaggerBasePackage))
      .paths(PathSelectors.any())
      .build();
      }

    /**

    • 构建 api文档的详细信息函数
    • @return
      */
      private ApiInfo apiInfo() {
      return new ApiInfoBuilder()
      .title(“compose 测试 APIs”)
      .description(“compose api接口文档”)
      .version(“1.0”)
      .build();
      }

    public static Predicate 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());
    }

}

yml添加配置

在这里插入图片描述
在项目中添加注解
这个就很简单了
在这里插入图片描述
完事
http://localhost:8080/swagger-ui.html
就是这么简单

  相关解决方案