弹簧引导配置跳过多个@Profile上的注册
我有一个具有不同配置文件设置的Spring Boot应用程序:,,,等。dev
prod
qc
console
这两个配置类的设置如下所示。 应为所有配置文件注册,但 . 应注册,但 和 除外。MyConfigurationA
console
MyConfigurationB
console
dev
当我使用配置文件运行应用程序时,不会注册 - 这很好。但是被注册了 - 我不想要。我已按如下方式设置了注释,以便不注册 for 配置文件和 .console
MyConfigurationA
MyConfigurationB
@Profile
MyConfigurationB
console
dev
但是,当我使用配置文件运行应用程序时,正在注册。MyConfigurationB
console
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT })
文档(http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html)有一个包含一个配置文件而排除另一个配置文件的示例。在我的例子中,我将两者都排除在外,因为@Profile({"!p1", "!p2"}):
@Profile({“p1”, “!p2”}),如果配置文件“p1”处于活动状态或配置文件“p2”未处于活动状态,则将发生注册。
我的问题是:如何跳过两个配置文件的配置注册? 正在执行 OR 操作。我们需要在这里进行和操作。@Profile({"!p1", "!p2"})
验证码 :
@Configuration
@Profile({ "!" + Constants.PROFILE_CONSOLE })
public class MyConfigurationA {
static{
System.out.println("MyConfigurationA registering...");
}
}
@Configuration
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT }) // doesn't exclude both, its OR condition
public class MyConfigurationB {
static{
System.out.println("MyConfigurationB registering...");
}
}
public final class Constants {
public static final String PROFILE_DEVELOPMENT = "dev";
public static final String PROFILE_CONSOLE = "console";
...
}