Pourquoi votre Spring Boot « ne veut pas » écouter sur le 8080 ?
\nVous lancez votre première application Spring Boot, vous voyez la bannière tant attendue dans la console, vous ouvrez le navigateur — et là, « Connection refused ». Une situation familière ? Le plus souvent, le problème est que le port 8080 est déjà occupé par un autre processus (par exemple, Skype, Docker ou une deuxième instance de votre propre application). Ou, à l'inverse, vous devez lancer trois microservices sur une seule machine, et ils veulent tous s'emparer du même port.
\nDans cet article, nous allons passer en revue toutes les principales méthodes de configuration du port dans Spring Boot — des plus simples aux plus « robustes » pour la production. Vous apprendrez à redéfinir le port via les fichiers de configuration, les variables d'environnement, les arguments de ligne de commande et même par programmation. Et à la fin, je vous donnerai une liste de contrôle pour choisir la méthode adaptée à chaque situation.
\n\nMéthode 1 : application.properties — la classique
\nLa méthode la plus courante et la plus intuitive. Dans le fichier src/main/resources/application.properties, il suffit d'ajouter une ligne :
server.port=9090\nVoilà. Après le redémarrage, l'application écoutera sur le port 9090. Si vous voulez revenir au 8080, supprimez ou commentez simplement la ligne.
\nAvantages : simplicité, clarté, fonctionne « prêt à l'emploi ».
\nInconvénients : codé en dur — pour chaque environnement (dev, test, prod), vous devrez modifier le fichier manuellement ou utiliser des profils.
\n\nMéthode 2 : application.yml (YAML) — pour les amateurs de structure
\nSi vous préférez le format YAML, la configuration ressemblera à ceci :
\nserver:\n port: 9090\nAttention aux indentations : deux espaces avant port. YAML est sensible aux espaces, mais il permet de regrouper les paramètres. Par exemple, vous pouvez définir à la fois le port et le chemin de contexte :
server:\n port: 9090\n servlet:\n context-path: /myapp\nQuand l'utiliser : si votre projet utilise déjà YAML pour toutes les configurations (par exemple, pour Spring Cloud Config).
\n\nMéthode 3 : Arguments de ligne de commande — flexibilité pour DevOps
\nLa méthode la plus flexible, souvent utilisée dans les conteneurs et les CI/CD. Lors du lancement du fichier JAR, transmettez simplement le paramètre :
\njava -jar myapp.jar --server.port=9090\nOu, si vous utilisez le plugin Maven/Gradle :
\nmvn spring-boot:run -Dspring-boot.run.arguments=--server.port=9090\nLes arguments de ligne de commande ont la plus haute priorité parmi toutes les méthodes de configuration dans Spring Boot. Cela signifie qu'ils remplaceront même ce qui est écrit dans application.properties.
Idéal pour : les conteneurs Docker, Kubernetes, les déploiements automatisés.
\n\nMéthode 4 : Variables d'environnement — le standard des applications twelve-factor
\nSpring Boot lit automatiquement les variables d'environnement et les convertit en propriétés. La règle est simple : SERVER_PORT (en majuscules, souligné au lieu du point) deviendra server.port.
Sous Linux/macOS :
\nexport SERVER_PORT=9090\njava -jar myapp.jar\nSous Windows (cmd) :
\nset SERVER_PORT=9090\njava -jar myapp.jar\nDans Docker Compose, c'est encore plus élégant :
\nservices:\n myapp:\n image: myapp:latest\n ports:\n - "9090:9090"\n environment:\n - SERVER_PORT=9090\nPourquoi c'est génial : les variables d'environnement ne sont pas stockées dans le dépôt, elles sont faciles à modifier pour différents environnements, et elles suivent la méthodologie 12-factor app.
\n\nMéthode 5 : Configuration programmatique — pour le micromanagement
\nParfois, vous devez calculer le port dynamiquement (par exemple, trouver un port libre ou l'obtenir depuis un service externe). Dans ce cas, le code Java vient à la rescousse.
\nL'option la plus simple est de redéfinir la méthode setServerPort dans la clas