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在生產環境中使用,在發佈的時候不使用。怎麼實現?
- 判斷是不是生產環境,是則 flag = false,否則 flag = true
- 註入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!
推薦閱讀:
- 解決@Api註解不展示controller內容的問題
- Springboot集成swagger實現方式
- springboot中swagger、異步/定時/郵件任務的問題
- Spring boot配置 swagger的示例代碼
- SpringBoot整合OpenApi的實踐