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.