我已经与不同资料设置一个弹簧引导应用注册:dev
,prod
,qc
,console
等弹簧引导配置跳过多个@profile
两个配置类是设置如下。 MyConfigurationA
应注册所有配置文件,但console
除外。 MyConfigurationB
应当予以登记,除了console
和dev
。
当我使用配置文件console
运行应用程序时,MyConfigurationA
未注册 - 这很好。但MyConfigurationB
获得注册 - 我不想要。我设置了@Profile
注释如下,以不型材console
和dev
注册MyConfigurationB
。
但是当我使用配置文件console
运行应用程序时,MyConfigurationB
正在注册。
@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' 是活跃OR发生登记,如果配置文件 'P2'不活跃。
我的问题是:我们如何可以跳过这两个配置文件的配置注册? @Profile({"!p1", "!p2"})
正在进行或操作。我们在这里需要AND操作。
代码:
@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";
...
}
这是正确的!谢谢.. – gtiwari333