需求:
生产环境下,需要关闭swagger配置,避免接口暴露。
方法:
1、使用注解@Value()
2、使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭。
3、使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”) 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger。
方法一:使用注解@Value()
在Swagger2Config类里添加;
并需要在配置文件里添加一个swagger.enable属性,根据不同的application-xx.yml进行动态插入true或false即可。
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Value("${swagger.enable}")
private Boolean enable;
@Bean
public Docket swaggerPersonApi10() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
.paths(PathSelectors.any())
.enable(enable) //配置在该处生效
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.version("1.0")
.title("xx项目:xx平台 Swagger2 文档 API")
.contact(new Contact(" xx团队", "https://www.xx.com/", "kangjia@xx.com"))
.description("logservice platform API v1.0")
.build();
}
}
方法二:使用注解@Profile({“dev”,“test”}) 表示在开发或测试环境开启,而在生产关闭。
@Configuration
@EnableSwagger2
@Profile({"local", "dev"})
public class Swagger2Config {
@Bean
public Docket swaggerPersonApi10() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.version("1.0")
.title("xx项目:xx平台 Swagger2 文档 API")
.contact(new Contact(" xx团队", "https://www.xx.com/", "kangjia@xx.com"))
.description("logservice platform API v1.0")
.build();
}
}
方法三:使用注解@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”) 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger。
1、使用注解 @ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”)
@Configuration
@EnableSwagger2
//@ConditionalOnProperty(name ="enabled" ,prefix = "swagger",havingValue = "true",matchIfMissing = true //matchIfMissing=true :为空则设为true,不合理
@ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”)
public class Swagger2Config {
@Bean
public Docket swaggerPersonApi10() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.unidata.cloud.logservice.api.controller"))
.paths(PathSelectors.any())
.enable(enable)
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.version("1.0")
.title("xx项目:xx平台 Swagger2 文档 API")
.contact(new Contact(" xx团队", "https://www.xxx.com/", "kangjia@xxx.com"))
.description("logservice platform API v1.0")
.build();
}
}
2、然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不写该配置则默认关闭Swagger。文章来源:https://www.toymoban.com/news/detail-451698.html
#Swagger lock
swagger:
enabled: true
参考链接:https://www.dandelioncloud.cn/article/details/1593427183718813697文章来源地址https://www.toymoban.com/news/detail-451698.html
到了这里,关于springBoot如何【禁用Swagger】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!