Wie wird das aktive Frühling 3.1-Umgebungsprofil über eine Property-Datei und nicht über eine env-Variable oder Systemeigenschaft festgelegt?
Verwenden wir die neue Umgebung profile feature von spring 3.1. Wir haben derzeit legen Sie das aktive Profil durch das setzen der Umgebungsvariablen Frühjahr.profile.active=xxxxx auf dem server, auf dem wir die Anwendung bereitstellen.
Wir denken, dass dies eine suboptimale Lösung, denn die war-Datei, die wir bereitstellen wollen, sollte nur noch eine weitere properties-Datei und stellt die Umgebung, in der die Frühlings-app-Kontext geladen werden soll, so dass die Implementierung nicht abhängig von einigen env var auf dem server festgelegt.
Ich versucht, herauszufinden, wie zu tun, und gefunden:
ConfigurableEnvironment.setActiveProfiles()
die ich verwenden können, um programmgesteuert das Profil aber dann habe ich immer noch nicht weiß, wo und Wann dieser code ausgeführt. Irgendwo, wo der spring-context geladen? Kann ich laden Sie die parameter, die ich übergeben möchte an die Methode aus einer properties-Datei?
UPDATE: ich habe gerade bei docsdie ich vielleicht in der Lage zu implementieren, legen Sie das aktive Profil?
InformationsquelleAutor der Frage Fabian | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
In
web.xml
Mit
WebApplicationInitializer
Dieser Ansatz wird verwendet, wenn Sie nicht über eine
web.xml
- Datei in den Servlet-3.0-Umgebung und bootstrapping der Frühling komplett aus Java:Wo
SpringConfiguration
Klasse versehen mit@Configuration
.InformationsquelleAutor der Antwort Tomasz Nurkiewicz
Die Antwort von Thomasz ist so lange gültig, wie der name des Profils kann zur Verfügung gestellt werden, die statisch in der web.xml oder verwendet man das neue XML-less configuration geben, wo könnte man programmgesteuert laden des Profils zu setzen, aus einer properties-Datei.
Als wir noch die XML-version, die ich untersuchte weiter und fand folgende schöne Lösung, wo Sie bei der Umsetzung Ihrer eigenen
ApplicationContextInitializer
wo Sie fügen Sie einfach einen neuen PropertySource mit einer properties-Datei zu der Liste der Quellen zu suchen, die Umwelt-spezifische Einstellungen. im Beispiel unten könnte man diespring.profiles.active
Eigenschaft in derenv.properties
Datei.Musst du dann hinzufügen, dass die Initialisierung als parameter an die
ContextLoaderListener
des Frühlings wie folgt vor, um Ihreweb.xml
:Können Sie auch anwenden, um
DispatcherServlet
:InformationsquelleAutor der Antwort Fabian
Aus irgendeinem Grund nur einen Weg, der für mich arbeitet
....
InformationsquelleAutor der Antwort Michail Nikolaev
Hier ist eine variation auf die P13nApplicationContextInitializer Ansatz. Doch dieses mal erhalten wir den Pfad env Eigenschaften von JNDI. In meinem Fall habe ich ein JNDI-Globale Umgebungsvariable als coacorrect/Feder-Profil = file:/tmp/env.Eigenschaften
<Environment name="coacorrect/spring-profile" type="java.lang.String" value="/opt/WebSphere/props"/>
<ResourceLink global="coacorrect/spring-profile" name="coacorrect/spring-profile" type="java.lang.String"/>
In einen Behälter, fügen Sie gegebenenfalls in web.xml
}
InformationsquelleAutor der Antwort Jim Doyle