Comment changer le port par défaut dans Spring Boot

1. Introduction

Spring Boot fournit des valeurs par défaut sensibles pour de nombreuses propriétés de configuration. Néanmoins, nous devons parfois les personnaliser avec nos valeurs spécifiques à chaque cas.

Un cas d'utilisation courant est la modification du port par défaut du serveur intégré .

Dans ce rapide didacticiel, nous aborderons plusieurs façons d'y parvenir.

2. Utilisation des fichiers de propriétés

Le moyen le plus rapide et le plus simple de personnaliser Spring Boot consiste à remplacer les valeurs des propriétés par défaut.

Pour le port du serveur, la propriété que nous souhaitons modifier est server.port .

Par défaut, le serveur intégré démarre sur le port 8080. Voyons comment nous pouvons fournir une valeur différente dans un fichier application.properties :

server.port=8081

Le serveur démarrera maintenant sur le port 8081.

De même, nous pouvons faire la même chose si nous utilisons un fichier application.yml :

server: port : 8081

Les deux fichiers sont chargés automatiquement par Spring Boot s'ils sont placés dans le répertoire src / main / resources d'une application Maven.

2.1. Ports spécifiques à l'environnement

Si nous avons une application déployée dans différents environnements, nous souhaitons peut-être qu'elle s'exécute sur différents ports sur chaque système.

Nous pouvons facilement y parvenir en combinant l'approche des fichiers de propriétés avec les profils Spring. Plus précisément, nous pouvons créer un fichier de propriétés pour chaque environnement.

Par exemple, nous aurons un fichier application-dev.properties avec le contenu:

server.port=8081

Ensuite, nous ajouterons un autre fichier application-qa.properties avec un port différent:

server.port=8082

La configuration des fichiers de propriétés devrait être suffisante dans la plupart des cas.

Cependant, il existe d'autres options pour cet objectif, alors explorons-les également.

3. Configuration programmatique

Nous pouvons configurer le port par programme en définissant la propriété spécifique lors du démarrage de l'application ou en personnalisant la configuration du serveur intégré.

Voyons d' abord comment définir la propriété dans la 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); } }

Ensuite, pour personnaliser la configuration du serveur, nous devons implémenter l' interface WebServerFactoryCustomizer :

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

Notez que cela s'applique à la version Spring Boot 2.x.

Pour Spring Boot 1.x, nous pouvons implémenter de la même manière l' interface EmbeddedServletContainerCustomizer .

4. Utilisation des arguments de ligne de commande

Lors de l'empaquetage et de l'exécution de notre application en tant que fichier jar, nous pouvons définir l' argument server.port avec la commande java :

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

Ou en utilisant la syntaxe équivalente:

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

5. Ordre d'évaluation

En guise de note finale, examinons l'ordre dans lequel ces approches sont évaluées par Spring Boot.

Fondamentalement, la priorité des configurations est:

  • configuration du serveur intégré
  • arguments de ligne de commande
  • fichiers de propriété
  • configuration principale de @SpringBootApplication

6. Conclusion

Dans ce tutoriel rapide, nous avons vu comment configurer le port du serveur dans une application Spring Boot.

Le code source des exemples est disponible à l'adresse over sur GitHub.