• springBoot如何【禁用Swagger】


    需求:

    生产环境下,需要关闭swagger配置,避免接口暴露。

    方法:

    1、使用注解@Value()
    2、使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭。
    3、使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”) 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger。

    方法一:使用注解@Value()

    在Swagger2Config类里添加;
    并需要在配置文件里添加一个swagger.enable属性,根据不同的application-xx.yml进行动态插入true或false即可。

    @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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

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

    @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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    方法三:使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”) 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger。

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

    @Configuration
    @EnableSwagger2
    //@ConditionalOnProperty(name ="enabled" ,prefix = "swagger",havingValue = "true",matchIfMissing = true   //matchIfMissing=true :为空则设为true,不合理
    @ConditionalOnProperty(name = “swagger.enable”, havingValue =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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    2、然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不写该配置则默认关闭Swagger。

    #Swagger lock
    swagger:    
        enabled: true
    
    • 1
    • 2
    • 3

    参考链接:https://www.dandelioncloud.cn/article/details/1593427183718813697

  • 相关阅读:
    Invalid bound statement (not found)出现的原因和解决方法
    案例分享 | 金融行业运维数字化转型路径探索与实践
    探索Java设计模式:模板方法模式
    python责任链模式
    基于python的人力资源管理系统
    10款Visual Studio实用插件
    传神论文中心|第25期人工智能领域论文推荐
    【第97题】JAVA高级技术-网络编程16(简易聊天室11:实现客户端群聊)
    seata的快速入门
    【JS面试题】面试官:“[1,2,3].map(parseInt)“ 输出结果是什么?答上来就算你通过面试
  • 原文地址:https://blog.csdn.net/m0_46459413/article/details/130709016