Java之Swagger配置扫描接口以及开关案例讲解

网友投稿 298 2022-12-21

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在生产环境中使用,在发布的时候不使用。怎么实现?

判断是不是生产环境,是则 eLmNxbEZJflag = 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");

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:“Sun King”获7000万美元股权融资,Sun King为亚非地区提供太阳能产品
下一篇:硅基仿生获近5亿元D轮融资,硅基仿生加速血糖数字化全程管理
相关文章

 发表评论

暂时没有评论,来抢沙发吧~