wake-up-neo.com

Einstellen der Federprofilvariablen

Ich habe zwei Frühlingsprofile: dev und test. Ich möchte das aktive Profil in der Serverumgebung festlegen. Ich möchte es nicht in meinem Code festlegen, damit das Profil an jedem Ort, an dem ich meine Anwendung bereitstelle, basierend auf dem Profil auf dem Server geladen wird. Wie kann ich das machen?

58
Maheshwaran K

Sie können einfach eine Systemeigenschaft auf dem Server wie folgt festlegen ...

-Dspring.profiles.active=test

Bearbeiten: Um dies zu Tomcat in Eclipse hinzuzufügen, wählen Sie Run -> Run Configurations Und wählen Sie Ihre Tomcat-Ausführungskonfiguration. Klicken Sie auf die Registerkarte Arguments und fügen Sie -Dspring.profiles.active = test am Ende von VM arguments Hinzu. Eine andere Möglichkeit wäre, die Eigenschaft zu Ihrer Datei catalina.properties in Ihrem Projekt Servers hinzuzufügen. Wenn Sie sie jedoch dort hinzufügen, lassen Sie -D weg

Edit: Zur Verwendung mit Spring Boot haben Sie eine zusätzliche Auswahl. Sie können die Eigenschaft als Programmargument übergeben, wenn Sie der Eigenschaft zwei Bindestriche voranstellen.

Hier sind zwei Beispiele mit einer ausführbaren Spring Boot-JAR-Datei ...

Systemeigenschaft

[[email protected] ~]$ Java -jar -Dspring.profiles.active=test myproject.jar

Programmargument

[[email protected] ~]$ Java -jar myproject.jar --spring.profiles.active=test
99
hyness

Dafür gibt es mindestens zwei Möglichkeiten:

  1. definieren von Kontextparametern in der Datei web.xml, die die Anweisung "Ein Paket für alle Umgebungen" aufheben. Das empfehle ich nicht

  2. systemeigenschaft definieren -Dspring.profiles.active=your-active-profile

Ich glaube, dass das Definieren von Systemeigenschaften ein viel besserer Ansatz ist. So wie man Systemeigenschaft für Tomcat definiert? Im Internet konnte ich viele Ratschläge wie "catalina.sh ändern" finden, da Sie keine Konfigurationsdatei für solche Dinge finden. Catalina.sh zu modifizieren ist eine schmutzige und nicht wartbare Lösung. Es gibt einen besseren Weg, das zu tun.

Erstellen Sie einfach die Datei setenv.sh im bin-Verzeichnis von Tomcat mit folgendem Inhalt:

Java_OPTS="$Java_OPTS -Dspring.profiles.active=dev"

und es wird automatisch geladen, wenn catalina.sh gestartet oder ausgeführt wird.

Hier ist ein Blog beschreibt die obige Lösung. Der Kommentarbereich ist interessant, da hier mehr Details besprochen werden.

25
Nilesh

Setzen Sie für Eclipse -Dspring.profiles.active Variable in den VM Argumenten würde den Trick tun.

Gehe zu

Klicken Sie mit der rechten Maustaste auf Projekt -> Ausführen als -> Konfigurationen ausführen -> Argumente

Und füge dein -Dspring.profiles.active=dev in den VM-Argumenten

4
Abdullah Khan

als Systemumgebungsvariable:

Windows: Start -> Geben Sie "envi" ein, wählen Sie Umgebungsvariablen aus und fügen Sie eine neue hinzu: Name: spring_profiles_active Value: dev (oder was auch immer deins ist)

Linux: füge folgende Zeile in/etc/environment unter PATH ein:

spring_profiles_active=prod (oder welches Profil auch immer)

dann auch export spring_profiles_active=prod so hast du es jetzt in der runtime.

3
R.S

Für Tomcat 8:

Linux:

Erstelle setenv.sh und aktualisiere es mit:

export SPRING_PROFILES_ACTIVE = dev

Windows:

Erstelle setenv.bat und aktualisiere es wie folgt:

setze SPRING_PROFILES_ACTIVE = dev

3
Ram Pratap