Spring Boot Change Context Path

1. Übersicht

Spring Boot liefert standardmäßig Inhalte im Stammkontextpfad ("/") .

Und während es normalerweise eine gute Idee ist, Konventionen der Konfiguration vorzuziehen, gibt es Fälle, in denen wir einen benutzerdefinierten Pfad haben möchten.

In diesem kurzen Tutorial werden die verschiedenen Konfigurationsmöglichkeiten beschrieben.

2. Festlegen der Eigenschaft

Wie bei vielen anderen Konfigurationsoptionen kann der Kontextpfad in Spring Boot durch Festlegen einer Eigenschaft geändert werden, z. B. server.servlet.context-path .

Beachten Sie, dass dies für Spring Boot 2.x funktioniert.

Für Boot 1.x lautet die Eigenschaft server.context-path .

Es gibt mehrere Möglichkeiten, diese Eigenschaft festzulegen. Schauen wir uns diese nacheinander an.

2.1. Verwenden von application.properties / yml

Die einfachste Möglichkeit, den Kontextpfad zu ändern, besteht darin, die Eigenschaft in der Datei application.properties / yml festzulegen :

server.servlet.context-path=/baeldung

Anstatt die Eigenschaftendatei in src / main / resources abzulegen , können wir sie auch im aktuellen Arbeitsverzeichnis (außerhalb des Klassenpfads) behalten.

2.2. Java-Systemeigenschaft

Wir können den Kontextpfad auch als Java-Systemeigenschaft festlegen, bevor der Kontext initialisiert wird:

public static void main(String[] args) { System.setProperty("server.servlet.context-path", "/baeldung"); SpringApplication.run(Application.class, args); }

2.3. OS-Umgebungsvariable

Spring Boot kann sich auch auf Umgebungsvariablen des Betriebssystems stützen. Auf Unix-basierten Systemen können wir schreiben:

$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung

Unter Windows lautet der Befehl zum Festlegen einer Umgebungsvariablen:

> set SERVER_SERVLET_CONTEXT_PATH=/baeldung

Das oben Umgebungsvariable ist für Frühjahr Boot - 2.xx , Wenn wir 1.xx haben , die Variable ist SERVER_CONTEXT_PATH .

2.4. Kommandozeilenargumente

Wir können die Eigenschaften auch dynamisch über Befehlszeilenargumente festlegen:

$ java -jar app.jar --server.servlet.context-path=/baeldung

3. Verwenden von Java Config

Legen Sie nun den Kontextpfad fest, indem Sie die Bean-Factory mit einer Konfigurations-Bean füllen.

Mit Spring Boot 2 können wir WebServerFactoryCustomizer verwenden :

@Bean public WebServerFactoryCustomizer webServerFactoryCustomizer() { return factory -> factory.setContextPath("/baeldung"); }

Mit Spring Boot 1 können wir eine Instanz von EmbeddedServletContainerCustomizer erstellen :

@Bean public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return container -> container.setContextPath("/baeldung"); }

4. Prioritätsreihenfolge der Konfigurationen

Bei so vielen Optionen haben wir möglicherweise mehr als eine Konfiguration für dieselbe Eigenschaft.

Hier ist die Prioritätsreihenfolge in absteigender Reihenfolge, mit der Spring Boot die effektive Konfiguration auswählt:

  1. Java Config
  2. Kommandozeilenargumente
  3. Java-Systemeigenschaften
  4. Betriebssystemumgebungsvariablen
  5. application.properties im aktuellen Verzeichnis
  6. application.properties im Klassenpfad ( src / main / resources oder die gepackte JAR-Datei)

5. Schlussfolgerung

In diesem Artikel haben wir schnell verschiedene Möglichkeiten zum Festlegen des Kontextpfads oder einer anderen Konfigurationseigenschaft in einer Spring Boot-Anwendung behandelt.