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.
Lectures complémentaires:
Migration de Spring à Spring Boot
Découvrez comment migrer correctement d'une initialisation à une autre.
Création d'un démarreur personnalisé avec démarrage à ressort
Un guide rapide et pratique pour créer des démarreurs Spring Boot personnalisés.
Test en démarrage de printemps
Découvrez comment Spring Boot prend en charge les tests pour écrire efficacement des tests unitaires.
2. Le numéro de port
Dans les principales applications autonomes, le port HTTP principal est par défaut 8080; we can easily configure Boot to use a different port:
server.port=8083
Et pour la configuration basée sur YAML:
server:
port: 8083
Nous pouvons également personnaliser le port du serveur par programme:
@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 l'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 bean`BasicErrorController si vous ne spécifiez aucune implémentation personnalisée dans la configuration. `++
Cependant, ce contrôleur par défaut peut bien sûr ê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 les mappages/error 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 de/errorHaven:
@GetMapping("/errorHaven")
String errorHeaven() {
return "You have reached the haven of errors!!!";
}
Sortie:
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 deSpringApplication. Cela a une méthode statiqueexit() qui prend deux arguments: leApplicationContext et unExitCodeGenerator:
@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 facilementtune the logging levels in a Boot application; À 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 queLogback,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émarrageby exposing them as beans à partir de la configuration conventionnelle:
@Bean
public HelloWorldServlet helloWorld() {
return new HelloWorldServlet();
}
Vous pouvez également utiliser unServletRegistrationBean:
@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éralementTomcat as the default embedded server. Si cela doit être modifié, vous pouvez exclure la dépendance Tomcat et inclure à la place Jetty ou Undertow:
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 certains desinteresting and useful Spring Boot configuration options.
Il existe bien sûr de nombreuses autres options pour configurer et adapter une application de démarrage à vos besoins dans les documents de référence - ce ne sont que quelques-unes des solutions les plus utiles que j'ai trouvées.