SpringBoot集成Swagger(五)动态配制Swagger的开关 | Java随笔记

「这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战


相关文章

Java随笔记:Java随笔记


前言

  • 一直都在讲如何过滤,不知道大家有没有考虑过一个问题。
  • 我们在工作中,也就是实际开发中,一般都是分环境的,总不能线上也搞个Swagger展示出来吧?
  • 一般都是开发环境才需要配制Swagger,方便前后端联调。
  • 那么,如何动态配制Swagger的开关呢?

动态Swagger开关

  • 前面讲过的Docket类还有印象吧?他里面有这么一个方法

  • ​
      /**
       * Hook to externally control auto initialization of this swagger plugin instance.
       * Typically used if defer initialization.
       *
       * @param externallyConfiguredFlag - true to turn it on, false to turn it off
       * @return this Docket
       */
      public Docket enable(boolean externallyConfiguredFlag) {
        this.enabled = externallyConfiguredFlag;
        return this;
      }
    复制代码
  • 看下默认值

  • image-20211123215933420.png

  • 也就是说,我们前面不设置enable的话,默认是开启的。

  • 整合yml配制文件来动态开关

  • 关于如何配制动态yml配置文件可以点这里 如何将application配置文件玩出花样来?| SpringBoot系列(二)

  • 在此关于这个不在赘述

  • 首先建立两个yml文件

  • image-20211123221657396.png

  • 建立实体类SwaggerModel通过@ConfigurationProperties(prefix = "")接受配置文件的信息

    • @Data
      @Component
      @ConfigurationProperties(prefix = "swagger")
      public class SwaggerModel {
          private boolean enable;
      }
      复制代码
  • SwaggerConfig改造

    • @Configuration //配置类
      @EnableSwagger2// 开启Swagger2的自动配置
      public class SwaggerConfig {
      ​
          @Autowired
          private SwaggerModel swaggerModel;//读取配置文件的内容!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      ​
          @Bean
          public Docket docket(){
              return new Docket(DocumentationType.SWAGGER_2)
                      .apiInfo(apiInfo())
                      .enable(swaggerModel.isEnable())//这里是改造重点!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                      .select()
                      .paths(PathSelectors.any()))
                      .build();
          }
      ​
          //配置文档信息
          private ApiInfo apiInfo() {
              Contact contact = new Contact("大鱼", "https://juejin.cn/user/2084329779387864/posts", "[email protected]");
              return new ApiInfo(
                      "大鱼随笔记", // 标题
                      "Swagger的学习", // 描述
                      "v1.0", // 版本
                      "https://juejin.cn/user/2084329779387864/posts", // 组织链接
                      contact, // 联系人信息
                      "Apach 2.0 许可", // 许可
                      "https://juejin.cn/user/2084329779387864/posts", // 许可连接
                      new ArrayList<>()// 扩展
              );
          }
      }
      复制代码
  • 到此我们先指定dev环境启动看看,理论上开启Swagger

  • image-20211123222657278.png

  • image-20211123221943223.png

  • 结果如下:

  • image-20211123222101870.png

  • 完美!

  • 指定prod启动
  • image-20211123222252801.png
  • image-20211123222222480.png
  • 结果如下:
  • image-20211123222330027.png
  • 完美符合我们的要求!

总结

  • 其实这种玩法主要有三个知识点:

    • ①、动态配置文件
    • ②、@ConfigurationProperties注解读取配置文件的信息
    • ③、Swagger的开关
  • 以上都是个人所言,如有不对,欢迎指出。

  • 如果对您有帮助,希望给我点个赞点个关注呗!咱们明天继续Swagger的讲解!

  • 预告:Swagger实体的配置详解


路漫漫其修远兮,吾必将上下求索~

如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah

猜你喜欢

转载自juejin.im/post/7033772616133378055