Comment changer le port par défaut lors du démarrage printanier

Comment changer le port par défaut lors du démarrage du printemps

1. introduction

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

Un cas d'utilisation courant estchanging the default port for the embedded server.

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

Lectures complémentaires:

Propriétés avec ressort et botte de printemps

Didacticiel sur l'utilisation des fichiers de propriétés et des valeurs de propriétés dans Spring.

Read more

Chemin du contexte de modification du démarrage du printemps

Découvrez différentes manières de modifier le chemin de contexte dans votre application Spring Boot.

Read more

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 voulons modifier estserver.port.

Par défaut, le serveur intégré démarre sur le port 8080. Let’s see how we can provide a different value in an application.properties file:

server.port=8081

Maintenant, le serveur va démarrer sur le port 8081.

De même, nous pouvons faire de même si nous utilisons un fichierapplication.yml:

server:
  port : 8081

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

2.1. Ports spécifiques à l'environnement

Si nous avons une application qui est 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. Specifically, we can create a property file for each environment.

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

server.port=8081

Ensuite, nous ajouterons un autre fichierapplication-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 au 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'interfaceWebServerFactoryCustomizer:

@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'interfaceEmbeddedServletContainerCustomizer.

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'argumentserver.port avec la commandejava:

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

Pour terminer, examinons l'ordre dans lequel ces approches sont évaluées par Spring Boot.

Fondamentalement, la priorité des configurations est la suivante:

  • configuration du serveur intégré

  • arguments en ligne de commande

  • dossiers de propriété

  • configuration principale de@SpringBootApplication

6. Conclusion

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

Le code source des exemples est disponibleover on GitHub.