Démarrer une application Web avec Spring 5

Démarrer une application Web avec Spring 5

1. Vue d'ensemble

Le tutoriel montre commentBootstrap a Web Application with Spring.

Nous examinerons la solution Spring Boot pour démarrer l'application et verrons également une approche non Spring Boot.

Nous utiliserons principalement la configuration Java, mais nous examinerons également leur configuration XML équivalente.

Lectures complémentaires:

Spring Boot Tutorial - Démarrer une application simple

Voici comment vous commencez à comprendre Spring Boot.

Read more

Configurer une application Web Spring Boot

Certaines des configurations les plus utiles pour une application Spring Boot.

Read more

Migration de Spring à Spring Boot

Découvrez comment migrer correctement d'une initialisation à une autre.

Read more

2. Amorçage à l'aide de Spring Boot

2.1. Dépendance Maven

Tout d'abord, nous aurons besoin de la dépendancespring-boot-starter-web:


    org.springframework.boot
    spring-boot-starter-web
    2.1.1.RELEASE

Cette entrée comprend:

  • spring-web et le modulespring-webmvc dont nous avons besoin pour notre application Web Spring

  • un démarreur Tomcat afin que nous puissions exécuter notre application Web directement sans installer explicitement de serveur

2.2. Création d'une application de démarrage de printemps

The most straight-forward way to get started using Spring Boot is to create a main class and annotate it with @SpringBootApplication:

@SpringBootApplication
public class SpringBootRestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRestApplication.class, args);
    }
}

Cette annotation unique équivaut à utiliser@Configuration,@EnableAutoConfiguration et@ComponentScan.

Par défaut, tous les composants du même package ou inférieur sont analysés.

Next, for Java-based configuration of Spring beans, we need to create a config class and annotate it with @Configuration annotation:

@Configuration
public class WebConfig {

}

Cette annotation est le principal artefact utilisé par la configuration Spring basée sur Java; il est lui-même méta-annoté avec@Component, ce qui fait des classes annotées des beans standards et en tant que tels, également des candidats pour l'analyse des composants.

L'objectif principal des classes@Configuration est d'être des sources de définitions de bean pour le conteneur Spring IoC. Pour une description plus détaillée, consultez lesofficial docs.

Voyons également une solution utilisant la bibliothèque corespring-webmvc.

3. Amorçage à l'aide de spring-webmvc

3.1. Dépendances Maven

Tout d'abord, nous avons besoin de la dépendancespring-webmvc:


    org.springframework
    spring-webmvc
    5.0.0.RELEASE

3.2. La configuration Web basée sur Java

Ensuite, nous allons ajouter la classe de configuration qui a l'annotation@Configuration:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig {

}

Ici, contrairement à la solution Spring Boot, nous devrons définir explicitement@EnableWebMvc pour configurer les configurations Spring MVC par défaut et@ComponentScan pour spécifier les packages à rechercher des composants.

L'annotation@EnableWebMvc fournit la configuration Spring Web MVC telle que la configuration du servlet du répartiteur, l'activation des annotations@Controller et@RequestMapping et la configuration d'autres valeurs par défaut.

@ComponentScan configure la directive d'analyse des composants, spécifiant les packages à analyser.

3.3. La classe d'initialisation

Ensuite, nous devonsadd a class that implements the WebApplicationInitializer interface:

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {
        AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
        context.scan("com.example");
        container.addListener(new ContextLoaderListener(context));

        ServletRegistration.Dynamic dispatcher =
          container.addServlet("mvc", new DispatcherServlet(context));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
}

Ici, nous créons un contexte Spring à l'aide de la classeAnnotationConfigWebApplicationContext, ce qui signifie que nous n'utilisons qu'une configuration basée sur des annotations. Ensuite, nous spécifions les packages pour rechercher des composants et des classes de configuration.

Enfin, nous définissons le point d’entrée de l’application Web: lesDispatcherServlet.

Cette classe peut remplacer entièrement le fichierweb.xml des versions <3.0 Servlet.

4. Configuration XML

Jetons également un coup d'œil à la configuration Web XML équivalente:


Nous pouvons remplacer ce fichier XML par la classeWebConfig ci-dessus.

Pour démarrer l'application, nous pouvons utiliser une classe Initializer qui charge la configuration XML ou un fichier web.xml. Pour plus de détails sur ces deux approches, consultezour previous article.

5. Conclusion

Dans cet article, nous avons étudié deux solutions populaires pour amorcer une application Web Spring, l’une utilisant le démarreur Web Spring Boot et l’autre utilisant la bibliothèque principale spring-webmvc.

Dansthe next article on REST with Spring, je couvre la configuration de MVC dans le projet, la configuration des codes d'état HTTP, le marshalling de la charge utile et la négociation de contenu.

Comme toujours, le code présenté dans cet article est disponibleover on Github. Ceci est un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.