Devo codificare una logica diversa in base al diverso profilo Ambiente corrente. Come si ottengono i profili attivi e predefiniti correnti da Spring?Come si ottiene il profilo ambientale attivo/predefinito corrente in primavera?
risposta
È possibile autowire dell'Ambiente
@Autowired
Environment env;
ambiente offre String[] getActiveProfiles()
, String[] getDefaultProfiles()
, e boolean acceptsProfiles(String... profiles)
Funziona anche con '@ Resource' (Spring 4.2) –
Se non si utilizza autowiring, è sufficiente implementare EnvironmentAware
Ecco un esempio più completo.
Autowire Ambiente
In primo luogo si vorrà autowire il fagiolo ambiente.
@Autowired
private Environment environment;
Verificare se i profili esistono in Profili attivi
Quindi è possibile utilizzare getActiveProfiles()
per scoprire se il profilo esiste nell'elenco dei profili attivi. Ecco un esempio che prende lo String[]
da getActiveProfiles()
, riceve uno stream da quell'array, quindi utilizza i parametri di corrispondenza per verificare più profili (maiuscole e minuscole) che restituisce un valore booleano se esiste.
//Check if Active profiles contains "local" or "test"
if(Arrays.stream(environment.getActiveProfiles()).anyMatch(
env -> (env.equalsIgnoreCase("test")
|| env.equalsIgnoreCase("local"))))
{
doSomethingForLocalOrTest();
}
//Check if Active profiles contains "prod"
else if(Arrays.stream(environment.getActiveProfiles()).anyMatch(
env -> (env.equalsIgnoreCase("prod"))))
{
doSomethingForProd();
}
È inoltre possibile ottenere simili utilizzo funzionalità di annotazione @Profile("local")
Ecco ulteriori informazioni su questa tecnica: Spring Profiles
@Profile sembra la soluzione migliore. –
@Value("${spring.profiles.active}")
private String activeProfile;
Funziona e non è necessario implementare EnvironmentAware. Ma non conosco gli svantaggi di questo approccio.
Questa riga fornisce questo errore: 'Causato da: java.lang.IllegalArgumentException: Impossibile risolvere il segnaposto 'spring.profiles.active' nel valore" $ {spring.profiles.active} "' – zygimantus
Estendere bella risposta semplice di User1648825 (non posso commentare e mia modifica è stata respinta):
@Value("${spring.profiles.active}")
private String activeProfile;
Questo potrebbe generare un IllegalArgumentException se sono impostate alcun profilo (ottengo un valore nullo). Questa potrebbe essere una buona cosa se ne hai bisogno; se non utilizzare la sintassi di 'default' per @value, vale a dire:
@Value("${spring.profiles.active:Unknown}")
private String activeProfile;
... activeProfile ora contiene 'Unknown' se spring.profiles.active non può essere risolto
- 1. Profilo predefinito in primavera 3.1
- 2. Come si ottiene l'utente corrente in Perl in modo portatile?
- 3. ottiene il ruolo dell'utente corrente
- 4. Come si ottiene la versione pubblicata corrente in un'applicazione .NET?
- 5. Come si ottiene l'entità che rappresenta l'utente corrente in Symfony2?
- 6. Come posso impostare il profilo attivo tramite annotazione in primavera?
- 7. ottiene l'elemento corrente
- 8. Come si ottiene lo scostamento UTC corrente (fuso orario)?
- 9. Come si ottiene il comportamento del profilo IPython da Jupyter 4.x?
- 10. In Vim, come si ottiene il numero di righe nel file corrente usando vimscript?
- 11. Come si ottiene il nome del fuso orario corrente in Postgres 9.3?
- 12. Come abilitare i lavori @Scheduled per profilo in primavera?
- 13. Il selenio ottiene il valore dell'attesa implicita corrente
- 14. UITextView ottiene la riga corrente
- 15. ASP.net MVC ottiene viewengine corrente
- 16. GPS Android ottiene posizione corrente
- 17. Come si ottiene GetCustomAttributes?
- 18. Corrente di accesso Modello in primavera-mvc
- 19. JavaScript: ottiene il nodo corrente in esecuzione <script>?
- 20. Attivazione Primavera Profilo argomenti JVM attivi in GWT modalità
- 21. Come si ottiene l'ora corrente in un diverso TimeZone in Delphi?
- 22. Come si ottiene il tempo trascorso in millisecondi in Ruby?
- 23. Come si ottiene il numero di pagina corrente di un ViewPager per Android?
- 24. Laravel 5 come si ottiene il nome dell'azione del percorso?
- 25. ottiene il tipo di cursore del mouse corrente
- 26. ottiene profilo utente profilo immagine grande da facebook con omniauth in devise 2.0
- 27. Slim 3 ottiene il percorso corrente nel middleware
- 28. Come si ottiene la versione corrente del mio progetto iOS in codice?
- 29. Come si ottiene un riferimento all'elemento di posta nella finestra aperta corrente in Outlook utilizzando VBA?
- 30. Come si ottiene il nome dell'host locale in PowerShell?
avete bisogno di più dettagli di quello. – aweigold
@aweigold: richiama automaticamente il profilo ambiente attivo/predefinito in primavera 3.1. quali ulteriori dettagli hai bisogno? – Bobo
Ho offerto una modifica ... Non ho i diritti di modifica completa, annullerò il mio voto quando posso. – aweigold