• Spring Boot 禁用 Swagger 的三种方式


    本文来讨论在 Spring Boot 中禁用swagger

    原文:https://blog.csdn.net/weixin_37264997/article/details/82762050

    一、方法一:使用@Profile

    使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭。(推荐使用)

    package com.unidata.cloud.logservice.infra.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    /**
     * @author kangjia@xx.com
     * @date 2019/10/14 9:27
     */
    @Configuration
    @EnableSwagger2
    @Profile({"local", "dev"})
    public class Swagger2Config {
        @Bean
        public Docket swaggerPersonApi10() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
                    .paths(PathSelectors.any())
                    .build()
                    .apiInfo(apiInfo());
        }
    
        private ApiInfo apiInfo() {
            return new ApiInfoBuilder()
                    .version("1.0")
                    .title("xx项目:xx平台 Swagger2 文档 API")
                    .contact(new Contact("  xx团队", "https://www.xx.com/", "kangjia@xx.com"))
                    .description("logservice platform API v1.0")
                    .build();
        }
    }
    

    二、方法二:使用 @Value() 推荐使用

    1. Swagger2Config类里添加

      package com.unidata.cloud.logservice.infra.config;
      
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.context.annotation.Profile;
      import springfox.documentation.builders.ApiInfoBuilder;
      import springfox.documentation.builders.PathSelectors;
      import springfox.documentation.builders.RequestHandlerSelectors;
      import springfox.documentation.service.ApiInfo;
      import springfox.documentation.service.Contact;
      import springfox.documentation.spi.DocumentationType;
      import springfox.documentation.spring.web.plugins.Docket;
      import springfox.documentation.swagger2.annotations.EnableSwagger2;
      
      /**
       * @author kangjia@xx.com
       * @date 2019/10/14 9:27
       */
      @Configuration
      @EnableSwagger2
      public class Swagger2Config {
          
          @Value("${swagger.enable}")
          private Boolean enable;
          
          @Bean
          public Docket swaggerPersonApi10() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
                      .paths(PathSelectors.any())
                  	.enable(enable)
                      .build()
                      .apiInfo(apiInfo());
          }
      
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .version("1.0")
                      .title("xx项目:xx平台 Swagger2 文档 API")
                      .contact(new Contact("  xx团队", "https://www.xx.com/", "kangjia@xx.com"))
                      .description("logservice platform API v1.0")
                      .build();
          }
      }
      
    2. 在配置文件里添加一个swagger.enable属性,根据不同的application-xx.yml进行动态插入truefalse即可。

    三、方法三:使用@ConditionalOnProperty

    1. 使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”)

      package com.unidata.cloud.logservice.infra.config;
      
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      import org.springframework.context.annotation.Profile;
      import springfox.documentation.builders.ApiInfoBuilder;
      import springfox.documentation.builders.PathSelectors;
      import springfox.documentation.builders.RequestHandlerSelectors;
      import springfox.documentation.service.ApiInfo;
      import springfox.documentation.service.Contact;
      import springfox.documentation.spi.DocumentationType;
      import springfox.documentation.spring.web.plugins.Docket;
      import springfox.documentation.swagger2.annotations.EnableSwagger2;
      
      /**
       * @author kangjia@xx.com
       * @date 2019/10/14 9:27
       */
      @Configuration
      @EnableSwagger2
      @ConditionalOnProperty(name ="enabled" ,prefix = "swagger",havingValue = "true",matchIfMissing = true)
      public class Swagger2Config {
          
          @Bean
          public Docket swaggerPersonApi10() {
              return new Docket(DocumentationType.SWAGGER_2)
                      .select()
                      .apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
                      .paths(PathSelectors.any())
                  	.enable(enable)
                      .build()
                      .apiInfo(apiInfo());
          }
      
          private ApiInfo apiInfo() {
              return new ApiInfoBuilder()
                      .version("1.0")
                      .title("xx项目:xx平台 Swagger2 文档 API")
                      .contact(new Contact("  xx团队", "https://www.xxx.com/", "kangjia@xxx.com"))
                      .description("logservice platform API v1.0")
                      .build();
          }
      }
      
    2. 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger。

      #Swagger lock
      swagger:
          enabled: true
      
  • 相关阅读:
    php数组到json的转变
    微信小程序获取微信绑定的手机号
    微信小程序授权登录
    用海豚框架(DolphinPHP)实现单/多图片上传时,如何获得图片路径
    数据库索引-简单了解
    php将二维数组转换成我想要的一维数组
    php的八大数据类型
    单例模式
    Springboot配置Sqlserver
    WinForm 文件操作
  • 原文地址:https://www.cnblogs.com/kjgym/p/11838299.html
Copyright © 2020-2023  润新知