溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么利用Swagger配置掃描接口

發(fā)布時間:2021-08-05 14:07:07 來源:億速云 閱讀:235 作者:Leah 欄目:開發(fā)技術

本篇文章為大家展示了Java中怎么利用Swagger配置掃描接口,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

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

1.1 配置掃描接口

Java中怎么利用Swagger配置掃描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具體參數(shù)
     */
    @Bean
    public Docket docket() {
        /*
         * 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
         * basePackage(final String basePackage) // 根據(jù)包路徑掃描接口(最常用)
         * 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();
    }

運行結果(因為現(xiàn)在只掃描了com.tian.swagger.controller 的包 所以只會有一個HelloController):

Java中怎么利用Swagger配置掃描接口

1.2 配置接口掃描過濾

Java中怎么利用Swagger配置掃描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具體參數(shù)
     */
    @Bean
    public Docket docket() {
        /*
         * 通過.select()方法,去配置掃描接口,RequestHandlerSelectors配置如何掃描接口
         * basePackage(final String basePackage) // 根據(jù)包路徑掃描接口
         * 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下的所有接口

這里可以選擇的參數(shù)有:

  • any() // 任何請求都掃描

  • none() // 任何請求都不掃描

  • regex(final String pathRegex) // 通過正則表達式控制

  • ant(final String antPattern) // 通過ant()控制


1.3 配置Swagger開關

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

Java中怎么利用Swagger配置掃描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具體參數(shù)
     */
    @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();
    }

運行結果:

Java中怎么利用Swagger配置掃描接口

1.4 我只希望我的Swagger在生產環(huán)境中使用,在發(fā)布的時候不使用。怎么實現(xiàn)?

  1. 判斷是不是生產環(huán)境,是則 flag = false,否則 flag = true

  2. 注入enable(flag)

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

Java中怎么利用Swagger配置掃描接口

application.properties

spring.profiles.active=dev

application-dev.properties

server.port=8081

application-pro.properties

server.port=8082
1.4.2 代碼實現(xiàn)

Java中怎么利用Swagger配置掃描接口

SwaggerConfig.java

/**
     * 配置docket以配置Swagger具體參數(shù)
     */
    @Bean
    // org.springframework.core.env.Environment
    public Docket docket(Environment environment) {
        // 設置要顯示swagger的環(huán)境 這里是 dev 和 test 環(huán)境
        // org.springframework.core.env.Profiles
        Profiles profiles = Profiles.of("dev", "test");
        // 判斷當前是否處于該環(huán)境
        // 通過 enable() 接收此參數(shù)判斷是否要顯示
        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

Java中怎么利用Swagger配置掃描接口

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

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

Java中怎么利用Swagger配置掃描接口

上述內容就是Java中怎么利用Swagger配置掃描接口,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI