本文作者:suxingrui
本文链接:https://blog.csdn.net/suxingrui/article/details/103788314
版权声明:本文为原创文章,转载请注明出处。
回顾2019年碰到的问题及解决方式
问题:实现Swagger只在开发环境与测试环境启用,生产环境不启用
问题发现:
配置Swagger,如果不做任何处理的话,在生产环境也会启用,就会存在一定的安全风险。
所以,引申出如题所述的实现目标。
调查分析:
然后,需要考虑的就是,不能每次编译打包都要修改配置或者代码来达到目标。
所以,可以使用@Conditional来实现。
如下所示,一个简单的实现方式:
解决方法:
1、先实现一个条件:SwaggerEnableCondition
public class SwaggerEnableCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
String active = context.getEnvironment().getProperty("spring.profiles.active");
return "dev".equals(active) || "test".equals(active);
}
}
2、使用
@Conditional(SwaggerEnableCondition.class)
@EnableSwagger2
@Configuration
public class Swagger2 {
@Value("${swagger.apis:}")
private String apis;
@Conditional(SwaggerEnableCondition.class)
@Bean
public Docket createDocket() {
...
}
}