Java之Swagger配置掃描接口以及開關案例講解

1. Swagger–配置掃描接口及開關

1.1 配置掃描接口

在這裡插入圖片描述

SwaggerConfig.java

    /**
     * 配置docket以配置Swagger具體參數
     */
    @Bean
    public Docket docket() {
        /*
         * 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
         * basePackage(final String basePackage) // 根據包路徑掃描接口(最常用)
         * any() 掃描所有,項目中的所有接口都會被掃描到
         * none() 不掃描接口
         * 通過方法上的註解掃描,如withMethodAnnotation(GetMapping.class)隻掃描get請求
         * withMethodAnnotation(final Class<? extends Annotation> annotation)
         * 通過類上的註解掃描,如.withClassAnnotation(Controller.class)隻掃描有controller註解的類中的接口
         * withClassAnnotation(final Class<? extends Annotation> annotation)
         */
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).build();
    }

運行結果(因為現在隻掃描瞭com.tian.swagger.controller 的包 所以隻會有一個HelloController):

在這裡插入圖片描述

1.2 配置接口掃描過濾

在這裡插入圖片描述

SwaggerConfig.java

    /**
     * 配置docket以配置Swagger具體參數
     */
    @Bean
    public Docket docket() {
        /*
         * 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
         * basePackage(final String basePackage) // 根據包路徑掃描接口
         * any() 掃描所有,項目中的所有接口都會被掃描到
         * none() 不掃描接口
         * 通過方法上的註解掃描,如withMethodAnnotation(GetMapping.class)隻掃描get請求
         * withMethodAnnotation(final Class<? extends Annotation> annotation)
         * 通過類上的註解掃描,如.withClassAnnotation(Controller.class)隻掃描有controller註解的類中的接口
         * withClassAnnotation(final Class<? extends Annotation> annotation)
         */
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

這裡隻選擇瞭請求路徑包含瞭/tian下的所有接口

這裡可以選擇的參數有:

  • any() // 任何請求都掃描
  • none() // 任何請求都不掃描
  • regex(final String pathRegex) // 通過正則表達式控制
  • ant(final String antPattern) // 通過ant()控制

1.3 配置Swagger開關

enable(boolean) 表示是否啟用Swagger 默認為true(啟用) 如果為false,則Swagger不能在遊覽器中訪問

在這裡插入圖片描述

SwaggerConfig.java

    /**
     * 配置docket以配置Swagger具體參數
     */
    @Bean
    public Docket docket() {
        // enable(boolean) 表示是否啟用Swagger 默認為true(啟用) 如果為false,則Swagger不能在遊覽器中訪問
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(false).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

運行結果:

在這裡插入圖片描述

1.4 我隻希望我的Swagger在生產環境中使用,在發佈的時候不使用。怎麼實現?

  1. 判斷是不是生產環境,是則 flag = false,否則 flag = true
  2. 註入enable(flag)

1.4.1 準備工作,新建2個配置文件

在這裡插入圖片描述

application.properties

spring.profiles.active=dev

application-dev.properties

server.port=8081

application-pro.properties

server.port=8082

1.4.2 代碼實現

在這裡插入圖片描述

SwaggerConfig.java

    /**
     * 配置docket以配置Swagger具體參數
     */
    @Bean
    // org.springframework.core.env.Environment
    public Docket docket(Environment environment) {
        // 設置要顯示swagger的環境 這裡是 dev 和 test 環境
        // org.springframework.core.env.Profiles
        Profiles profiles = Profiles.of("dev", "test");
        // 判斷當前是否處於該環境
        // 通過 enable() 接收此參數判斷是否要顯示
        boolean flag = environment.acceptsProfiles(profiles);


        // enable(boolean) 表示是否啟用Swagger 默認為true(啟用) 如果為false,則Swagger不能在遊覽器中訪問
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(flag).select().apis(RequestHandlerSelectors.basePackage("com.tian.swagger.controller")).paths(PathSelectors.ant("/tian/**")).build();
    }

啟動測試01:Profiles 裡面包含 dev

在這裡插入圖片描述

啟動測試01:Profiles 裡面不包含 dev

Profiles profiles = Profiles.of("test");

在這裡插入圖片描述

到此這篇關於Java之Swagger配置掃描接口以及開關案例講解的文章就介紹到這瞭,更多相關Java之Swagger配置掃描接口以及開關內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: