SpringBoot整合Swagger(五)動態配製Swagger的開關 | Java隨筆記

語言: CN / TW / HK

theme: scrolls-light

「這是我參與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("大魚", "http://juejin.cn/user/2084329779387864/posts", "[email protected]");        return new ApiInfo(                "大魚隨筆記", // 標題                "Swagger的學習", // 描述                "v1.0", // 版本                "http://juejin.cn/user/2084329779387864/posts", // 組織連結                contact, // 聯絡人資訊                "Apach 2.0 許可", // 許可                "http://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