有时候我们需要在开发或者测试环境中屏蔽某些profile,仅仅在生产上启动,那么怎么办呢?
Spring Boot 2.1及以上
这里说的是你生产上没有配置profile,但是测试与开发环境配置了,所以需要在不是生产且不是测试的环境中才使用,对于这个版本,仅仅配置如下代码即可:1
2
3
"!test & !dev") (
public class SpecialBean {}
Spring Boot 2.1以下
这个需要用到@Conditional
注解,自己去实现一个Conditional
即可,如下:1
2
3
4
5
6
7
8
9
10
11
12
13public class SomeCustomCondition implements Condition {
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
// Return true if NOT "test" AND NOT "dev"
return !context.getEnvironment().acceptsProfiles("test")
&& !context.getEnvironment().acceptsProfiles("dev");
}
}
(SomeCustomCondition.class)
public MyBean specialBean(){/*...*/}