Configurer une application Web Spring Boot

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.

Read more

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.

Read more

Test en démarrage de printemps

Découvrez comment Spring Boot prend en charge les tests pour écrire efficacement des tests unitaires.

Read more

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.