Java之Swagger配置扫描接口以及开关案例讲解
1. Swagger--配置扫描接口及开关
1.1 配置扫描接口
文章图片
SwaggerConfig.java
/*** 配置docket以配置Swagger具体参数*/@Beanpublic 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具体参数*/@Beanpublic 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()控制
enable(boolean) 表示是否启用Swagger 默认为true(启用) 如果为false,则Swagger不能在游览器中访问

文章图片
SwaggerConfig.java
/*** 配置docket以配置Swagger具体参数*/@Beanpublic 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)

文章图片
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.Environmentpublic Docket docket(Environment environment) {// 设置要显示swagger的环境 这里是 dev 和 test 环境// org.springframework.core.env.ProfilesProfiles 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配置扫描接口以及开关内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- PMSJ寻平面设计师之现代(Hyundai)
- 太平之莲
- 闲杂“细雨”
- 七年之痒之后
- 深入理解Go之generate
- 由浅入深理解AOP
- 期刊|期刊 | 国内核心期刊之(北大核心)
- 生活随笔|好天气下的意外之喜
- 感恩之旅第75天