Chemin du contexte de modification du démarrage du printemps

Chemin du contexte de modification du démarrage du printemps

1. Vue d'ensemble

Spring Boot, by default,serves content on the root context path (“/”).

Et bien que, généralement, il soit judicieux de préférer la convention à la configuration, il existe des cas où nous voulons avoir un chemin personnalisé.

Dans ce rapide tutoriel, nous aborderons les différentes façons de le configurer.

2. Définition de la propriété

Tout comme de nombreuses autres options de configuration, le chemin de contexte dans Spring Boot peut être modifié en définissant une propriété, c'est-à-direserver.servlet.context-path.

Notez que cela fonctionne pour Spring Boot 2.x.

Pour Boot 1.x, la propriété estserver.context-path.

Il existe plusieurs façons de définir cette propriété, examinons-les une par une.

2.1. Utilisation deapplication.properties /yml

Le moyen le plus simple de modifier le chemin du contexte est de définir la propriété dans le fichierapplication.properties /yml:

server.servlet.context-path=/example

Au lieu de placer le fichier de propriétés danssrc/main/resources, nous pouvons également le conserver dans le répertoire de travail courant (en dehors du chemin de classe).

2.2. Propriété système Java

Nous pouvons également définir le chemin du contexte en tant que propriété du système Java avant même que le contexte ne soit initialisé:

public static void main(String[] args) {
    System.setProperty("server.servlet.context-path", "/example");
    SpringApplication.run(Application.class, args);
}

2.3. Variable d'environnement du système d'exploitation

Spring Boot peut également s'appuyer sur des variables d'environnement de système d'exploitation. Sur les systèmes Unix, nous pouvons écrire:

$ export SERVER_SERVLET_CONTEXT_PATH=/example

Sous Windows, la commande permettant de définir une variable d’environnement est la suivante:

> set SERVER_SERVLET_CONTEXT_PATH=/example

Lesabove environment variable is for Spring Boot 2.x.x,If we have 1.x.x, la variable estSERVER_CONTEXT_PATH.

2.4. Arguments de ligne de commande

Nous pouvons également définir les propriétés de manière dynamique via des arguments de ligne de commande:

$ java -jar app.jar --server.servlet.context-path=/example

3. Utiliser Java Config

Définissons maintenant le chemin du contexte en remplissant la fabrique de bean avec un bean de configuration.

Avec Spring Boot 2, nous pouvons utiliserWebServerFactoryCustomizer:

@Bean
public WebServerFactoryCustomizer
  webServerFactoryCustomizer() {
    return factory -> factory.setContextPath("/example");
}

Avec Spring Boot 1, nous pouvons créer une instance deEmbeddedServletContainerCustomizer:

@Bean
public EmbeddedServletContainerCustomizer
  embeddedServletContainerCustomizer() {
    return container -> container.setContextPath("/example");
}

4. Ordre de priorité des configurations

Avec toutes ces options, il est possible que nous ayons plusieurs configurations pour la même propriété.

Voici lespriority order in descending order, que Spring Boot utilise pour sélectionner la configuration effective:

  1. Java Config

  2. Arguments de ligne de commande

  3. Propriétés du système Java

  4. Variables d'environnement OS

  5. application.properties dans le répertoire actuel

  6. application.properties dans le chemin de classe (src/main/resources ou le fichier jar empaqueté)

5. Conclusion

Dans cet article, nous avons rapidement abordé différentes manières de définir le chemin de contexte, ou toute autre propriété de configuration, dans une application Spring Boot.