Avvia un'applicazione Web con Spring 5

REST Top

Ho appena annunciato il nuovo corso Learn Spring , incentrato sui fondamenti di Spring 5 e Spring Boot 2:

>> SCOPRI IL CORSO

1. Panoramica

Il tutorial illustra come eseguire il bootstrap di un'applicazione Web con Spring.

Esamineremo la soluzione Spring Boot per il bootstrap dell'applicazione e vedremo anche un approccio non Spring Boot.

Useremo principalmente la configurazione Java, ma daremo anche uno sguardo alla loro configurazione XML equivalente.

2. Bootstrap utilizzando Spring Boot

2.1. Dipendenza da Maven

Innanzitutto, avremo bisogno della dipendenza spring-boot-starter-web:

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

Questo antipasto include:

  • spring-web e il modulo spring-webmvc di cui abbiamo bisogno per la nostra applicazione web Spring
  • uno starter Tomcat in modo da poter eseguire direttamente la nostra applicazione web senza installare esplicitamente alcun server

2.2. Creazione di un'applicazione Spring Boot

Il modo più semplice per iniziare a utilizzare Spring Boot è creare una classe principale e annotarla con @SpringBootApplication :

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

Questa singola annotazione è equivalente all'uso di @Configuration , @EnableAutoConfiguration e @ComponentScan.

Per impostazione predefinita, eseguirà la scansione di tutti i componenti nello stesso pacchetto o di seguito.

Successivamente, per la configurazione basata su Java dei bean Spring, dobbiamo creare una classe di configurazione e annotarla con l' annotazione @Configuration :

@Configuration public class WebConfig { }

Questa annotazione è l'elemento principale utilizzato dalla configurazione Spring basata su Java; esso stesso è meta-annotato con @Component , che rende le classi annotate bean standard e, come tale, anche candidate per la scansione dei componenti.

Lo scopo principale delle classi @Configuration è quello di essere fonti di definizioni di bean per il contenitore Spring IoC. Per una descrizione più dettagliata, vedere i documenti ufficiali.

Diamo anche un'occhiata a una soluzione che utilizza la libreria principale spring-webmvc .

3. Bootstrap utilizzando spring-webmvc

3.1. Dipendenze di Maven

Innanzitutto, abbiamo bisogno della dipendenza spring-webmvc:

 org.springframework spring-webmvc 5.0.0.RELEASE 

3.2. La configurazione Web basata su Java

Successivamente, aggiungeremo la classe di configurazione che ha l' annotazione @Configuration :

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

Qui, a differenza della soluzione Spring Boot, dovremo definire esplicitamente @EnableWebMvc per impostare le configurazioni Spring MVC predefinite e @ComponentScan per specificare i pacchetti da analizzare per i componenti.

L' annotazione @EnableWebMvc fornisce la configurazione Spring Web MVC come l'impostazione del servlet del dispatcher, l'abilitazione delle annotazioni @Controller e @RequestMapping e l'impostazione di altri valori predefiniti.

@ComponentScan configura la direttiva di scansione dei componenti, specificando i pacchetti da esaminare.

3.3. La classe Initializer

Successivamente, dobbiamo aggiungere una classe che implementa l' interfaccia WebApplicationInitializer :

public class AppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) throws ServletException { AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); context.scan("com.baeldung"); container.addListener(new ContextLoaderListener(context)); ServletRegistration.Dynamic dispatcher = container.addServlet("mvc", new DispatcherServlet(context)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } }

Qui stiamo creando un contesto Spring usando la classe AnnotationConfigWebApplicationContext , il che significa che stiamo usando solo la configurazione basata sull'annotazione. Quindi, stiamo specificando i pacchetti per cercare componenti e classi di configurazione.

Infine, stiamo definendo il punto di ingresso per l'applicazione Web: DispatcherServlet.

Questa classe può sostituire completamente il file web.xml dalle versioni <3.0 Servlet.

4. Configurazione XML

Diamo anche una rapida occhiata alla configurazione web XML equivalente:

Possiamo sostituire questo file XML con la classe WebConfig sopra.

Per avviare l'applicazione, possiamo utilizzare una classe Initializer che carica la configurazione XML o un file web.xml. Per maggiori dettagli su questi due approcci, consulta il nostro articolo precedente.

5. conclusione

In questo articolo, abbiamo esaminato due soluzioni popolari per il bootstrap di un'applicazione Web Spring, una utilizzando lo starter Web Spring Boot e l'altra utilizzando la libreria principale spring-webmvc.

Nel prossimo articolo su REST con Spring, tratterò la configurazione di MVC nel progetto, la configurazione dei codici di stato HTTP, il marshalling del payload e la negoziazione del contenuto.

Come sempre, il codice presentato in questo articolo è disponibile su Github. Questo è un progetto basato su Maven, quindi dovrebbe essere facile da importare ed eseguire così com'è.

REST fondo

Ho appena annunciato il nuovo corso Learn Spring , incentrato sui fondamenti di Spring 5 e Spring Boot 2:

>> SCOPRI IL CORSO