我已经将swagger插入我的春季启动应用程序。 Spring启动允许您拥有每个环境的属性文件。有没有办法禁用生产环境的招摇?
答案 0 :(得分:18)
将您的swagger配置放入单独的配置类中,并使用@Profile
注释对其进行注释 - >这样它只会在某些配置文件中扫描到Spring上下文中。
示例:
@Configuration
@EnableSwagger2
@Profile("dev")
public class SwaggerConfig {
// your swagger configuration
}
您可以通过命令行定义Spring Boot应用程序的配置文件:--spring.profiles.active=dev
或通过配置文件:spring.profiles.active=dev
。
Read this section of Spring Boot docs for more info about @Profile
答案 1 :(得分:10)
如果您在多个环境中工作,则还可以使用 @Profile 作为数组
startForeground
答案 2 :(得分:2)
这是我的配置类:
@Configuration
@Profile("swagger")
@EnableSwagger2
public class SwaggerConfig {
@Value("${info.build.version}")
private String buildVersion;
@Bean
public Docket documentation() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(regex("/rest/.*"))
.build()
.pathMapping("/")
.apiInfo(metadata());
}
private ApiInfo metadata() {
return new ApiInfoBuilder()
.title("API documentation of our App")
.description("Use this documentation as a reference how to interact with app's API")
.version(buildVersion)
.contact(new Contact("Dev-Team", "https://dev-website", "dev@mailbox"))
.build();
}
}
无论我需要Swagger,我都会将个人资料swagger
添加到环境变量SPRING_PROFILES_ACTIVE
答案 3 :(得分:1)
除了使用 profile 配置 Spring 的答案之外,考虑在反向 HTTP 代理上设置规则以阻止从 LAN 外部访问 Swagger 端点。这将为您提供一些针对 Swagger 端点攻击的深度防御。
答案 4 :(得分:0)
对于使用代码生成器(生成Swagger2SpringBoot)的用户:
完成。
答案 5 :(得分:0)
已为env配置
@配置
@ EnableSwagger2
@Profile(“ devone”)
application.yaml
profiles:
active:
${MY_ENV:devone}
MY_ENV,您将从文件中读取文件,例如.env
.env文件内容: MY_ENV =产品
在生产环境中,仅保留其他.env文件用于生产凭据。
答案 6 :(得分:0)
spring.profiles.active = production与@Profile(“!production”)对我有用,可以关闭产品中的摇摇欲坠。
例如:-
@Profile("!production")
@Component
@EnableSwagger2
public class SwaggerConfig {
//TODO
}
答案 7 :(得分:0)
使用 swagger 3.0.0 版本,您可以在相应的环境配置文件 springfox.documentation.enabled=false
文件中添加 application.properties
。例如,我已将此添加到 application-prod.properties
以在生产中禁用(在运行应用程序时,您必须使用 VM args 指定配置文件,如 -Dspring.profiles.active=prod
)