So ändern Sie den Standardport im Spring Boot

1. Einleitung

Spring Boot bietet sinnvolle Standardeinstellungen für viele Konfigurationseigenschaften. Dennoch müssen wir diese manchmal mit unseren fallspezifischen Werten anpassen.

Ein häufiger Anwendungsfall ist das Ändern des Standardports für den eingebetteten Server .

In diesem kurzen Tutorial werden wir verschiedene Möglichkeiten behandeln, um dies zu erreichen.

2. Verwenden von Eigenschaftendateien

Der schnellste und einfachste Weg, Spring Boot anzupassen, besteht darin, die Werte der Standardeigenschaften zu überschreiben.

Für den Server-Port möchten wir die Eigenschaft server.port ändern .

Standardmäßig startet der eingebettete Server an Port 8080. Lassen Sie uns sehen, wie wir einen anderen Wert in einer application.properties- Datei bereitstellen können :

server.port=8081

Jetzt startet der Server an Port 8081.

Ebenso können wir dasselbe tun, wenn wir eine application.yml- Datei verwenden:

server: port : 8081

Beide Dateien werden von Spring Boot automatisch geladen, wenn sie im Verzeichnis src / main / resources einer Maven-Anwendung abgelegt werden .

2.1. Umgebungsspezifische Ports

Wenn wir eine Anwendung haben, die in verschiedenen Umgebungen bereitgestellt wird, möchten wir möglicherweise, dass sie auf verschiedenen Ports auf jedem System ausgeführt wird.

Wir können dies leicht erreichen, indem wir den Ansatz der Eigenschaftendateien mit Spring-Profilen kombinieren. Insbesondere können wir für jede Umgebung eine Eigenschaftendatei erstellen.

Zum Beispiel haben wir eine application- dev.properties-Datei mit dem Inhalt:

server.port=8081

Dann fügen wir eine weitere application- qa.properties-Datei mit einem anderen Port hinzu:

server.port=8082

Die Konfiguration der Eigenschaftendateien sollte in den meisten Fällen ausreichend sein.

Es gibt jedoch auch andere Optionen für dieses Ziel. Lassen Sie uns diese also ebenfalls untersuchen.

3. Programmatische Konfiguration

Wir können den Port programmgesteuert konfigurieren, indem wir entweder die spezifische Eigenschaft beim Starten der Anwendung festlegen oder die Konfiguration des eingebetteten Servers anpassen.

Lassen Sie uns zunächst sehen, wie Sie die Eigenschaft in der Hauptklasse @SpringBootApplication festlegen :

@SpringBootApplication public class CustomApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(CustomApplication.class); app.setDefaultProperties(Collections .singletonMap("server.port", "8083")); app.run(args); } }

Als Nächstes müssen wir zum Anpassen der Serverkonfiguration die WebServerFactoryCustomizer- Schnittstelle implementieren :

@Component public class ServerPortCustomizer implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableWebServerFactory factory) { factory.setPort(8086); } }

Beachten Sie, dass dies für die Spring Boot 2.x-Version gilt.

Für Spring Boot 1.x können wir die EmbeddedServletContainerCustomizer- Schnittstelle auf ähnliche Weise implementieren .

4. Verwenden von Befehlszeilenargumenten

Beim Packen und Ausführen unserer Anwendung als JAR können wir das Argument server.port mit dem Befehl java festlegen :

java -jar spring-5.jar --server.port=8083

Oder mit der entsprechenden Syntax:

java -jar -Dserver.port=8083 spring-5.jar

5. Reihenfolge der Bewertung

Lassen Sie uns abschließend die Reihenfolge betrachten, in der diese Ansätze von Spring Boot bewertet werden.

Grundsätzlich ist die Konfigurationspriorität:

  • eingebettete Serverkonfiguration
  • Kommandozeilenargumente
  • Eigenschaftendateien
  • Haupt @SpringBootApplication Konfiguration

6. Fazit

In diesem kurzen Tutorial haben wir gesehen, wie der Server-Port in einer Spring Boot-Anwendung konfiguriert wird.

Der Quellcode für die Beispiele ist auf GitHub verfügbar.