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?
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
Dafür gibt es mindestens zwei Möglichkeiten:
definieren von Kontextparametern in der Datei web.xml, die die Anweisung "Ein Paket für alle Umgebungen" aufheben. Das empfehle ich nicht
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.
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
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.
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