Configuration du conteneur dans Spring Boot 2

Configuration du conteneur dans Spring Boot 2

1. Vue d'ensemble

Dans ce rapide didacticiel, nous verrons comment remplacer lesEmbeddedServletContainerCustomizer etConfigurableEmbeddedServletContainer dans Spring Boot 2.

Ces classes faisaient partie des versions précédentes de Spring Boot, mais ont été supprimées à partir de Spring Boot 2. Bien sûr,the functionality is still available through the interface WebServerFactoryCustomizer and the class *ConfigurableServletWebServerFactory*.

Voyons comment les utiliser.

2. Avant Spring Boot 2

Tout d'abord, examinons une configuration qui utilise l'ancienne classe et l'interface et que nous devrons remplacer:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(8080);
        container.setContextPath("");
     }
}

Ici, nous personnalisons le port et le chemin de contexte du conteneur de servlet.

Une autre possibilité pour y parvenir est d'utiliser des sous-classes plus spécifiques deConfigurableEmbeddedServletContainer, pour un type de conteneur tel que Tomcat:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcatContainer =
              (TomcatEmbeddedServletContainerFactory) container;
            tomcatContainer.setPort(8080);
            tomcatContainer.setContextPath("");
        }
    }
}

3. Mettre à niveau vers Spring Boot 2

Dans Spring Boot 2,the EmbeddedServletContainerCustomizer interface is replaced by WebServerFactoryCustomizer, while the ConfigurableEmbeddedServletContainer class is replaced with ConfigurableServletWebServerFactory.

Réécrivons l'exemple précédent pour un projet Spring Boot 2:

public class CustomContainer implements
  WebServerFactoryCustomizer {

    public void customize(ConfigurableServletWebServerFactory factory) {
        factory.setPort(8080);
        factory.setContextPath("");
     }
}

Et le deuxième exemple utilisera maintenant unTomcatServletWebServerFactory:

@Component
public class CustomContainer implements
  WebServerFactoryCustomizer {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.setContextPath("");
        factory.setPort(8080);
    }
}

De même, nous avons lesJettyServletWebServerFactory etUndertowServletWebServerFactory comme équivalents pour lesJettyEmbeddedServletContainerFactory etUndertowEmbeddedServletContainerFactory. supprimés

4. Conclusion

Cette brève description a montré comment résoudre un problème que nous pourrions rencontrer lors de la mise à niveau d'une application Spring Boot vers la version 2.x.

Un exemple de projet Spring Boot 2 est disponible dans nosGitHub repository.