Ho un'applicazione di avvio di primavera con diversa configurazione Profilo: dev
, prod
, qc
, console
eccconfigurazione di avvio primavera saltare la registrazione su più @profile
Le due classi di configurazione sono impostati come segue. MyConfigurationA
deve essere registrato per tutti i profili eccetto console
. MyConfigurationB
deve essere registrato ad eccezione di console
e dev
.
Quando eseguo l'applicazione con il profilo console
, lo MyConfigurationA
non viene registrato, il che va bene. Ma viene registrato MyConfigurationB
- che non voglio. Ho impostato l'annotazione @Profile
come segue per non registrare lo MyConfigurationB
per il profilo console
e dev
.
Ma il MyConfigurationB
viene registrato quando si esegue l'applicazione con il profilo console
.
@Profile({ "!" + Constants.PROFILE_CONSOLE , "!" + Constants.PROFILE_DEVELOPMENT })
La documentazione (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html) presenta un esempio di includere un profilo ed escludendo l'altra. Nel mio esempio sto escludendo sia come @Profile({"!p1", "!p2"}):
@profile ({ "P1", "! P2"}), la registrazione si verifica se profilo 'P1' è attivo O se il profilo 'P2' non è attivo
La mia domanda è: Come possiamo ignorare la registrazione delle configurazioni di entrambi i profili? @Profile({"!p1", "!p2"})
sta facendo un'operazione OR. Abbiamo bisogno dell'operazione AND qui.
Il codice:
@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";
...
}
Proprio così !! Grazie.. – gtiwari333