Configurer une application Web Spring Boot

1. Vue d'ensemble

Spring Boot peut faire beaucoup de choses; dans ce didacticiel, nous allons passer en revue quelques-unes des options de configuration les plus intéressantes de Boot.

2. Le numéro de port

Dans les principales applications autonomes, le port HTTP principal est par défaut 8080; nous pouvons facilement configurer Boot pour utiliser un port différent :

server.port=8083

Et pour la configuration basée sur YAML:

server: port: 8083

Nous pouvons également personnaliser le port du serveur par programmation:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactory container) { container.setPort(8083); } }

3. Le chemin du contexte

Par défaut, le chemin du contexte est «/». Si ce n'est pas idéal et que vous devez le changer - en quelque chose comme / app_name , voici le moyen rapide et simple de le faire via les propriétés:

server.servlet.contextPath=/springbootapp

Et pour la configuration basée sur YAML:

server: servlet: contextPath:/springbootapp

Enfin, le changement peut également être effectué par programme:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactorycontainer) { container.setContextPath("/springbootapp"); } }

4. La page d'erreur de marque blanche

Spring Boot enregistre automatiquement un BasicErrorControllerbean si vous ne spécifiez aucune implémentation personnalisée dans la configuration.

Cependant, ce contrôleur par défaut peut bien entendu être configuré:

public class MyCustomErrorController implements ErrorController { private static final String PATH = "/error"; @GetMapping(value=PATH) public String error() { return "Error haven"; } @Override public String getErrorPath() { return PATH; } }

5. Personnalisez les messages d'erreur

Boot fournit des mappages / erreurs par défaut pour gérer les erreurs de manière raisonnable.

Si vous souhaitez configurer des pages d'erreur plus spécifiques, il existe une bonne prise en charge d'un DSL Java uniforme pour personnaliser la gestion des erreurs:

@Component public class CustomizationBean implements WebServerFactoryCustomizer { @Override public void customize(ConfigurableServletWebServerFactorycontainer) { container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/400")); container.addErrorPages(new ErrorPage("/errorHaven")); } }

Ici, nous avons spécifiquement traité Bad Request pour correspondre au chemin / 400 et tous les autres pour correspondre au chemin commun.

Et une implémentation très simple / errorHaven :

@GetMapping("/errorHaven") String errorHeaven() { return "You have reached the haven of errors!!!"; }

Production:

You have reached the haven of errors!!!

6. Arrêter une application de démarrage par programme

Vous pouvez arrêter par programme une application de démarrage à l'aide de SpringApplication. Cela a une méthode exit () statique qui prend deux arguments: le ApplicationContext et un ExitCodeGenerator :

@Autowired public void shutDown(ExecutorServiceExitCodeGenerator exitCodeGenerator) { SpringApplication.exit(applicationContext, exitCodeGenerator); }

C'est grâce à cette méthode utilitaire que nous pouvons arrêter l'application.

7. Configurer les niveaux de journalisation

Vous pouvez facilement régler les niveaux de journalisation dans une application de démarrage ; À partir de la version 1.2.0, vous pouvez configurer le niveau de journalisation dans le fichier de propriétés principal:

logging.level.org.springframework.web: DEBUG logging.level.org.hibernate: ERROR

Et tout comme avec une application Spring standard, vous pouvez activer différents systèmes de journalisation tels que Logback , log4j , log4j2 , etc. en ajoutant leur fichier XML ou de propriétés personnalisé dans le chemin de classe et en définissant les bibliothèques dans le pom.

8. Enregistrer un nouveau servlet

Si vous déployez l'application à l'aide du serveur intégré, vous pouvez enregistrer de nouveaux servlets dans une application de démarrage en les exposant en tant que beans de la configuration conventionnelle:

@Bean public HelloWorldServlet helloWorld() { return new HelloWorldServlet(); }

Vous pouvez également utiliser un ServletRegistrationBean :

@Bean public SpringHelloServletRegistrationBean servletRegistrationBean() { SpringHelloServletRegistrationBean bean = new SpringHelloServletRegistrationBean( new SpringHelloWorldServlet(), "/springHelloWorld/*"); bean.setLoadOnStartup(1); bean.addInitParameter("message", "SpringHelloWorldServlet special message"); return bean; }

9. Configurer Jetty ou Undertow dans l'application de démarrage

Les démarreurs Spring Boot utilisent généralement Tomcat comme serveur intégré par défaut . Si cela doit être modifié, vous pouvez exclure la dépendance Tomcat et inclure Jetty ou Undertow à la place:

Configurer Jetty

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty 
@Bean public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() { JettyEmbeddedServletContainerFactory jettyContainer = new JettyEmbeddedServletContainerFactory(); jettyContainer.setPort(9000); jettyContainer.setContextPath("/springbootapp"); return jettyContainer; }

Configurer Undertow

 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-undertow 
@Bean public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() { UndertowEmbeddedServletContainerFactory factory = new UndertowEmbeddedServletContainerFactory(); factory.addBuilderCustomizers(new UndertowBuilderCustomizer() { @Override public void customize(io.undertow.Undertow.Builder builder) { builder.addHttpListener(8080, "0.0.0.0"); } }); return factory; }

10. Conclusion

Dans cet article rapide, nous avons passé en revue certaines des options de configuration Spring Boot les plus intéressantes et utiles .

Il existe bien sûr de très nombreuses autres options pour configurer et régler une application Boot en fonction de vos besoins dans la documentation de référence - ce ne sont que quelques-unes des plus utiles que j'ai trouvées.