SpringBoot整合Swagger(六)玩轉groupName()分組 | Java隨筆記

語言: CN / TW / HK

theme: scrolls-light

「這是我參與11月更文挑戰的第22天,活動詳情檢視:2021最後一次更文挑戰


相關文章

Java隨筆記:Java隨筆記


前言

  • 關於過濾的東西我們全部講完了,今天主要來講下分組。
  • 當專案過去龐大時,一個組可能不能滿足我們的需求。
  • 我們需要對專案的不同功能進行分組,方便檢視和區分。

groupName()分組

  • 首先我們看下,預設的有哪些分組?啟動專案。

  • image-20211124214840836.png

  • 預設只有一個分組default,預設分組。

  • 原始碼如下:

    • ​  /**   * If more than one instance of Docket exists, each one must have a unique groupName as   * supplied by this method. Defaults to "default".   *   * @param groupName - the unique identifier of this swagger group/configuration   * @return this Docket   */  public Docket groupName(String groupName) {    this.groupName = defaultIfAbsent(groupName, this.groupName);    return this; }
  • 那麼this.groupName的值呢?

    • image-20211124215054088.png
  • 由此可以得出,當我們不設定groupName()時,會有且只有一個預設分組。

  • 自定義分組名稱

    • @Bean    public Docket docket(){        return new Docket(DocumentationType.SWAGGER_2)               .apiInfo(apiInfo())               .groupName("group1")               .enable(swaggerModel.isEnable())               .select()               .paths(PathSelectors.any())               .build();   }
  • 再次啟動專案看看

    • image-20211124215227175.png
  • ok!沒問題了,成功設定了分組!

  • 那麼,如果我們有多個分組該怎麼辦呢?

  • 前面的文章就講到了,我們是使用Docket來控制Swagger的配置的。

  • 只需要設定多個Docket即可。

  • 程式碼如下:

    • @Bean    public Docket docket1(){        return new Docket(DocumentationType.SWAGGER_2)               .apiInfo(apiInfo())               .groupName("group1")               .enable(swaggerModel.isEnable())               .select()               .paths(PathSelectors.any())               .build();   } ​    @Bean    public Docket docket2(){        return new Docket(DocumentationType.SWAGGER_2)               .apiInfo(apiInfo())               .groupName("group2")               .enable(swaggerModel.isEnable())               .select()               .paths(PathSelectors.any())               .build();   } ​    @Bean    public Docket docket3(){        return new Docket(DocumentationType.SWAGGER_2)               .apiInfo(apiInfo())               .groupName("group3")               .enable(swaggerModel.isEnable())               .select()               .paths(PathSelectors.any())               .build();   }

    • 再次重啟專案

      • image-20211124215506103.png
    • nice!多個分組設定成功!

總結

  • 如果是在實際專案開發中呢?
  • 因為有多個Docket,每個Docket都可以設定一個分組,當然也可以設定每個Docket的單獨過濾規則
  • 這樣就完美設定成了一個大的功能模組對應一個分組。
  • 方便前端根據功能來查詢對應的介面資訊。
  • 為什麼要這樣?
  • 因為專案大了之後可能有幾百上千個介面。如果全在一個組內,找起來特別麻煩!
  • groupName()可以很方便的幫我們規避掉這個問題!
  • 以上都是個人所言,如有不對,歡迎指出。
  • 如果對您有幫助,希望給我點個贊點個關注唄!咱們明天繼續Swagger的講解!

路漫漫其修遠兮,吾必將上下求索~

如果你認為i博主寫的不錯!寫作不易,請點贊、關注、評論給博主一個鼓勵吧~hahah