Bootstrap en webapplikation med Spring 5

REST Top

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN

1. Oversigt

Vejledningen illustrerer, hvordan man gør det Bootstrap en webapplikation med Spring.

Vi ser på Spring Boot-løsningen til bootstrapping af applikationen og ser også en ikke-Spring Boot-tilgang.

Vi bruger primært Java-konfiguration, men ser også på deres tilsvarende XML-konfiguration.

2. Bootstrapping ved hjælp af Spring Boot

2.1. Maven afhængighed

Først har vi brug for afhængighed af spring-boot-starter-web:

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

Denne starter inkluderer:

  • fjeder-web og fjeder-webmvc modul, som vi har brug for til vores Spring-webapplikation
  • en Tomcat-starter, så vi kan køre vores webapplikation direkte uden eksplicit at installere nogen server

2.2. Oprettelse af en Spring Boot-applikation

Den mest ligefremme måde at komme i gang med Spring Boot er at oprette en hovedklasse og kommentere den med @SpringBootApplication:

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

Denne enkelt anmærkning svarer til brug @Konfiguration, @EnableAutoConfigurationog @ComponentScan.

Som standard scanner den alle komponenterne i den samme pakke eller derunder.

For Java-baseret konfiguration af Spring beans skal vi derefter oprette en konfigurationsklasse og kommentere den med @Konfiguration kommentar:

@Configuration offentlig klasse WebConfig {}

Denne kommentar er den vigtigste artefakt, der bruges af den Java-baserede Spring-konfiguration; det er selv meta-kommenteret med @Komponent, hvilket gør de kommenterede klasser til standardbønner og som sådan også kandidater til komponentscanning.

Hovedformålet med @Konfiguration klasser skal være kilder til bønnedefinitioner for Spring IoC Container. For en mere detaljeret beskrivelse, se de officielle dokumenter.

Lad os også se på en løsning ved hjælp af kernen fjeder-webmvc bibliotek.

3. Bootstrapping ved hjælp af fjeder-webmvc

3.1. Maven afhængigheder

For det første har vi brug for foråret-webmvc afhængighed:

 org.springframework spring-webmvc 5.0.0.RELEASE 

3.2. Den Java-baserede webkonfiguration

Dernæst tilføjer vi den konfigurationsklasse, der har @Konfiguration kommentar:

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

Her skal vi, i modsætning til Spring Boot-løsningen, udtrykkeligt definere @EnableWebMvc til opsætning af standard Spring MVC-konfigurationer og @ComponentScan for at specificere pakker, der skal scannes efter komponenter.

Det @EnableWebMvc annotation giver Spring Web MVC-konfiguration, såsom opsætning af afsenderservlet, hvilket muliggør @Kontrol og @RequestMapping kommentarer og opsætning af andre standardindstillinger.

@ComponentScan konfigurerer direktivet om komponentscanning og specificerer de pakker, der skal scannes.

3.3. Initialiseringsklassen

Derefter skal vi tilføj en klasse, der implementerer WebApplicationInitializer grænseflade:

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

Her skaber vi en forårskontekst ved hjælp af AnnotationConfigWebApplicationContext klasse, hvilket betyder, at vi kun bruger annoteringsbaseret konfiguration. Derefter specificerer vi pakkerne, der skal scannes efter komponenter og konfigurationsklasser.

Endelig definerer vi indgangspunktet for webapplikationen - DispatcherServlet.

Denne klasse kan helt erstatte web.xml fil fra <3.0 Servlet-versioner.

4. XML-konfiguration

Lad os også se hurtigt på den tilsvarende XML-webkonfiguration:

Vi kan erstatte denne XML-fil med WebConfig klasse ovenfor.

For at starte applikationen kan vi bruge en Initializer-klasse, der indlæser XML-konfigurationen eller en web.xml-fil. For flere detaljer om disse to tilgange, se vores forrige artikel.

5. Konklusion

I denne artikel undersøgte vi to populære løsninger til bootstrapping af en Spring-webapplikation, en ved hjælp af Spring Boot-webstarter og en anden ved hjælp af kernefjeder-webmvc-biblioteket.

I den næste artikel om REST med Spring dækker jeg opsætning af MVC i projektet, konfiguration af HTTP-statuskoder, nyttelastforsamling og indholdsforhandling.

Som altid er koden præsenteret i denne artikel tilgængelig på Github. Dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.

REST bunden

Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:

>> KONTROLLER KURSEN