Chemin de contexte de changement de Spring Boot

1. Vue d'ensemble

Spring Boot, par défaut, sert le contenu sur le chemin de contexte racine («/») .

Et bien que, généralement, il soit judicieux de préférer la convention à la configuration, il y a 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 -à- dire server.servlet.context-path .

Notez que cela fonctionne pour Spring Boot 2.x.

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

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

2.1. Utilisation de application.properties / yml

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

server.servlet.context-path=/baeldung

Au lieu de placer le fichier de propriétés dans src / main / resources , nous pouvons également le conserver dans le répertoire de travail actuel (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é système Java avant même que le contexte ne soit initialisé:

public static void main(String[] args) { System.setProperty("server.servlet.context-path", "/baeldung"); 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 du système d'exploitation. Sur les systèmes basés sur Unix, nous pouvons écrire:

$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung

Sous Windows, la commande pour définir une variable d'environnement est:

> set SERVER_SERVLET_CONTEXT_PATH=/baeldung

La variable d'environnement ci-dessus est pour Spring Boot 2.xx , si nous avons 1.xx , la variable est SERVER_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=/baeldung

3. Utilisation de Java Config

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

Avec Spring Boot 2, nous pouvons utiliser WebServerFactoryCustomizer :

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

Avec Spring Boot 1, nous pouvons créer une instance d' EmbeddedServletContainerCustomizer :

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

4. Ordre de priorité des configurations

Avec ces nombreuses options, nous pouvons finir par avoir plus d'une configuration pour la même propriété.

Voici l' ordre de priorité dans l'ordre décroissant, que Spring Boot utilise pour sélectionner la configuration effective:

  1. Configuration Java
  2. Arguments de ligne de commande
  3. Propriétés système Java
  4. Variables d'environnement du système d'exploitation
  5. application.properties dans le répertoire actuel
  6. application.properties dans le classpath ( src / main / resources ou le fichier jar packagé)

5. Conclusion

Dans cet article, nous avons rapidement couvert différentes façons de définir le chemin de contexte, ou toute autre propriété de configuration, dans une application Spring Boot.