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.
Configurer une application Web Spring Boot
Certaines des configurations les plus utiles pour une application Spring Boot.
Migration de Spring à Spring Boot
Découvrez comment migrer correctement d'une initialisation à une autre.
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.