Ich habe eine Frühlings-Boot-Anwendung mit unterschiedlichem Profilaufbau: dev
, prod
, qc
, console
usw.Frühling Boot-Konfiguration überspringen Registrierung auf mehreren @Profile
Die beiden Konfigurationsklassen Setup sind wie folgt. MyConfigurationA
sollte für alle Profile außer console
registriert werden. MyConfigurationB
sollte mit Ausnahme von console
und dev
registriert werden. Wenn ich die Anwendung mit dem Profil console
starte, wird die MyConfigurationA
nicht registriert - was in Ordnung ist. Aber MyConfigurationB
wird registriert - was ich nicht will. Ich habe die @Profile
Annotation wie folgt eingerichtet, um die MyConfigurationB
für Profil console
und dev
nicht zu registrieren.
Aber die MyConfigurationB
wird registriert, wenn ich die Anwendung mit Profil console
ausführen.
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT })
der Dokumentation (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html) hat ein Beispiel eines Profils des mit und ohne Berücksichtigung der anderen Seite. In meinem Beispiel beide ich ohne als @Profile({"!p1", "!p2"}):
@Profile ({ "p1", "! P2"}), wird Registrierung auftreten, wenn Profil 'p1' aktiv ist OR wenn profile 'p2' ist nicht aktiv.
Meine Frage ist: Wie können wir Registrierung der Konfigurationen beider Profile überspringen? @Profile({"!p1", "!p2"})
macht OR-Operation. Wir brauchen AND-Operation hier.
Der Code:
@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";
...
}
Das ist richtig !! Vielen Dank.. – gtiwari333