Come modificare la porta predefinita in Spring Boot

1. Introduzione

Spring Boot fornisce valori predefiniti ragionevoli per molte proprietà di configurazione. Tuttavia, a volte dobbiamo personalizzarli con i nostri valori specifici del caso.

Un caso d'uso comune è la modifica della porta predefinita per il server incorporato .

In questo breve tutorial, tratteremo diversi modi per ottenere ciò.

2. Utilizzo dei file delle proprietà

Il modo più semplice e veloce per personalizzare Spring Boot è sovrascrivere i valori delle proprietà predefinite.

Per la porta del server, la proprietà che vogliamo modificare è server.port .

Per impostazione predefinita, il server incorporato si avvia sulla porta 8080. Vediamo come possiamo fornire un valore diverso in un file application.properties :

server.port=8081

Ora il server verrà avviato sulla porta 8081.

Allo stesso modo, possiamo fare lo stesso se stiamo usando un file application.yml :

server: port : 8081

Entrambi i file vengono caricati automaticamente da Spring Boot se inseriti nella directory src / main / resources di un'applicazione Maven.

2.1. Porte specifiche per l'ambiente

Se disponiamo di un'applicazione distribuita in ambienti diversi, potremmo volerla eseguire su porte diverse su ciascun sistema.

Possiamo facilmente ottenere questo risultato combinando l'approccio dei file di proprietà con i profili Spring. Nello specifico, possiamo creare un file delle proprietà per ogni ambiente.

Ad esempio, avremo un file application-dev.properties con il contenuto:

server.port=8081

Quindi, aggiungeremo un altro file application-qa.properties con una porta diversa:

server.port=8082

La configurazione dei file delle proprietà dovrebbe essere sufficiente per la maggior parte dei casi.

Tuttavia, ci sono altre opzioni per questo obiettivo, quindi esploriamole anche.

3. Configurazione programmatica

È possibile configurare la porta a livello di codice impostando la proprietà specifica all'avvio dell'applicazione o personalizzando la configurazione del server incorporato.

Per prima cosa, vediamo come impostare la proprietà nella classe principale @SpringBootApplication :

@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); } }

Successivamente, per personalizzare la configurazione del server, dobbiamo implementare l' interfaccia WebServerFactoryCustomizer :

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

Notare che questo si applica alla versione Spring Boot 2.x.

Per Spring Boot 1.x, possiamo implementare in modo simile l' interfaccia EmbeddedServletContainerCustomizer .

4. Utilizzo degli argomenti della riga di comando

Quando impacchettiamo ed eseguiamo la nostra applicazione come un jar, possiamo impostare l' argomento server.port con il comando java :

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

O utilizzando la sintassi equivalente:

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

5. Ordine di valutazione

Come nota finale, diamo un'occhiata all'ordine in cui questi approcci vengono valutati da Spring Boot.

Fondamentalmente, la priorità delle configurazioni è:

  • configurazione del server incorporato
  • argomenti della riga di comando
  • file di proprietà
  • configurazione principale @SpringBootApplication

6. Conclusione

In questo breve tutorial, abbiamo visto come configurare la porta del server in un'applicazione Spring Boot.

Il codice sorgente per gli esempi è disponibile su GitHub.