SpringBoot集成Swagger(五)动态配制Swag

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


相关文章

Java随笔记:Java随笔记


前言

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

动态Swagger开关

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

  • 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    kotlin复制代码​
     /**
      * 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 = "")接受配置文件的信息

+ 
1
2
3
4
5
6
less复制代码@Data
@Component
@ConfigurationProperties(prefix = "swagger")
public class SwaggerModel {
   private boolean enable;
}
  • SwaggerConfig改造
+ 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
typescript复制代码@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", "773530472@qq.com");
       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

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%