Spring Boot Change Context Path

Kontextpfad für Spring Boot-Änderung

1. Überblick

Spring Boot, by default,serves content on the root context path (“/”).

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, d. H.server.servlet.context-path.

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

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

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

2.1. Verwenden vonapplication.properties /yml

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

server.servlet.context-path=/example

Anstatt die Eigenschaftendatei insrc/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", "/example");
    SpringApplication.run(Application.class, args);
}

2.3. OS-Umgebungsvariable

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

$ export SERVER_SERVLET_CONTEXT_PATH=/example

Unter Windows lautet der Befehl zum Festlegen einer Umgebungsvariablen wie folgt:

> set SERVER_SERVLET_CONTEXT_PATH=/example

Dieabove environment variable is for Spring Boot 2.x.x,If we have 1.x.x, die Variable istSERVER_CONTEXT_PATH.

2.4. Kommandozeilenargumente

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

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

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 wirWebServerFactoryCustomizer verwenden:

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

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

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

4. Prioritätsreihenfolge der Konfigurationen

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

Hier sind diepriority order in descending order,, mit denen 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. Fazit

In diesem Artikel wurden verschiedene Möglichkeiten zum Festlegen des Kontextpfads oder einer anderen Konfigurationseigenschaft in einer Spring Boot-Anwendung beschrieben.