Ich habe zwei Federprofile: "dev" und "test". Ich möchte das aktive Profil in der Serverumgebung festlegen, ich möchte es nicht in meinem Code festlegen, sodass das Profil, wo immer ich meine Anwendung ausliege, basierend auf dem Profil auf dem Server geladen wird. Wie kann ich das machen?Einstellung der Federprofilvariable
Antwort
Sie können einfach eine Systemeigenschaft auf dem Server wie folgt ...
-Dspring.profiles.active=test
Edit: dies in Eclipse zu tomcat hinzuzufügen, wählen Sie Run -> Run Configurations
und Tomcat laufen Konfiguration wählen. Klicken Sie auf die Registerkarte Arguments
und fügen Sie -Despring.profiles.active = test am Ende von VM arguments
hinzu. Eine andere Möglichkeit wäre es, die Eigenschaft auf Ihre catalina.properties in Ihrem Servers
Projekt hinzuzufügen, aber wenn Sie es hinzufügen, dass es unterlassen, die -D
Edit: Für den Einsatz mit Frühling Stiefel, haben Sie eine zusätzliche Wahl. Sie können die Eigenschaft als Programmargument übergeben, wenn Sie der Eigenschaft zwei Bindestriche voranstellen.
Hier sind zwei Beispiele einer Feder Boot-ausführbare jar-Datei mit ...
Systemeigenschaft
[[email protected] ~]$ java -jar -Dspring.profiles.active=test myproject.jar
Programm Argument
[[email protected] ~]$ java -jar myproject.jar --spring.profiles.active=test
Es gibt mindestens zwei Möglichkeiten, um das zu tun:
Definition Kontextparam in web.xml - das bricht "ein Paket für alle Umgebungen" Anweisung. Ich empfehle nicht, dass
definieren Systemeigenschaft
-Dspring.profiles.active=your-active-profile
Ich glaube, dass ein viel besserer Ansatz zu definieren Systemeigenschaft ist. Wie definiert man die Systemeigenschaft für Tomcat? Im Internet könnte ich eine Menge Ratschläge wie "catalina.sh ändern" finden, weil Sie keine Konfigurationsdatei finden, um solche Sachen zu machen. Das Ändern von catalina.sh ist eine schmutzige, nicht zu behebende Lösung. Es gibt einen besseren Weg, das zu tun.
Gerade Datei setenv.sh in Tomcat-bin-Verzeichnis mit Inhalt erstellen:
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"
und es wird automatisch catalina.sh starten oder laufen während des Fahrens geladen werden.
Here is a blog beschreibt die obige Lösung. Der Kommentarbereich ist interessant, da er mehr Details enthält.
als Systemumgebung Variable:
Fenster: Start -> Typ "envi" Umgebungsvariablen auswählen und fügen Sie eine neue: Name: spring_profiles_active Value: dev
(oder was auch immer dein ist)
Linux: Fügen Sie folgende Zeile zu/etc/environment unter Pfad:
spring_profiles_active=prod
(oder was auch immer Profil ist)
dann auch export spring_profiles_active=prod
also hast du es jetzt in der Laufzeit.
Dies funktioniert hervorragend (getestet in Windows), auch wenn Sie Ihre Anwendung in einem OSGI-Container ausführen. Denken Sie daran, die JVA-Instanz nach dem Festlegen neu zu starten, und stellen Sie sicher, dass die Systemeigenschaft mit dem Namen "spring.profiles.active" deaktiviert ist. Zu Ihrer Information: Dies setzt nicht die Systemeigenschaft, sondern das Spring Environment-Instanzprofil. Vielen Dank! –
Ich bin neu in Spring Profilen. "ON THE SERVER". Wo und wie genau muss ich es einstellen? –
Noch eine Sache ist, dass ich Tomcat durch Eclipse und nicht durch die Befehlszeile starte. –
Welchen Server benutzen Sie? Wenn Sie Tomcat verwenden, können Sie dies zu $ CATALINA_HOME/conf/catalina.properties hinzufügen, aber das -D weglassen, sodass Sie einfach spring.profiles.active = test – hyness