Booten Sie eine Webanwendung mit Spring 5

REST Top

Ich habe gerade den neuen Learn Spring- Kurs angekündigt , der sich auf die Grundlagen von Spring 5 und Spring Boot 2 konzentriert:

>> Überprüfen Sie den Kurs

1. Übersicht

Das Tutorial zeigt, wie Sie eine Webanwendung mit Spring booten.

Wir werden uns die Spring Boot-Lösung für das Bootstrapping der Anwendung ansehen und auch einen Nicht-Spring Boot-Ansatz sehen.

Wir werden hauptsächlich die Java-Konfiguration verwenden, aber auch die entsprechende XML-Konfiguration betrachten.

2. Bootstrapping mit Spring Boot

2.1. Maven-Abhängigkeit

Zuerst benötigen wir die Spring-Boot-Starter-Web-Abhängigkeit:

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

Dieser Starter beinhaltet:

  • spring-web und das spring-webmvc- Modul, das wir für unsere Spring-Webanwendung benötigen
  • ein Tomcat-Starter, damit wir unsere Webanwendung direkt ausführen können, ohne explizit einen Server zu installieren

2.2. Erstellen einer Spring Boot-Anwendung

Der einfachste Weg, um mit Spring Boot zu beginnen, besteht darin, eine Hauptklasse zu erstellen und sie mit @SpringBootApplication zu kommentieren :

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

Diese einzelne Anmerkung entspricht der Verwendung von @Configuration , @EnableAutoConfiguration und @ComponentScan.

Standardmäßig werden alle Komponenten im selben Paket oder darunter gescannt.

Als Nächstes müssen wir für die Java-basierte Konfiguration von Spring Beans eine Konfigurationsklasse erstellen und diese mit der Annotation @Configuration versehen :

@Configuration public class WebConfig { }

Diese Anmerkung ist das Hauptartefakt, das von der Java-basierten Spring-Konfiguration verwendet wird. Es ist selbst mit @Component meta-annotiert , wodurch die annotierten Klassen zu Standard-Beans werden und als solche auch Kandidaten für das Scannen von Komponenten sind.

Der Hauptzweck von @ Configuration- Klassen besteht darin, Quellen für Bean-Definitionen für den Spring IoC-Container zu sein. Eine detailliertere Beschreibung finden Sie in den offiziellen Dokumenten.

Schauen wir uns auch eine Lösung an, die die Kernbibliothek spring-webmvc verwendet.

3. Bootstrapping mit spring-webmvc

3.1. Maven-Abhängigkeiten

Zunächst benötigen wir die Spring-Webmvc-Abhängigkeit:

 org.springframework spring-webmvc 5.0.0.RELEASE 

3.2. Die Java-basierte Webkonfiguration

Als Nächstes fügen wir die Konfigurationsklasse mit der Annotation @Configuration hinzu :

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

Im Gegensatz zur Spring Boot-Lösung müssen wir hier explizit @EnableWebMvc zum Einrichten von Spring MVC-Standardkonfigurationen und @ComponentScan definieren , um Pakete anzugeben, die nach Komponenten durchsucht werden sollen.

Die Annotation @EnableWebMvc bietet die Spring Web MVC-Konfiguration, z. B. das Einrichten des Dispatcher- Servlets, das Aktivieren der Annotationen @Controller und @RequestMapping sowie das Einrichten anderer Standardeinstellungen.

@ComponentScan konfiguriert die Direktive zum Scannen von Komponenten und gibt die zu scannenden Pakete an.

3.3. Die Initialisierungsklasse

Als Nächstes müssen wir eine Klasse hinzufügen, die die WebApplicationInitializer- Schnittstelle implementiert :

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("/"); } }

Hier erstellen wir einen Spring-Kontext mit der AnnotationConfigWebApplicationContext- Klasse. Dies bedeutet, dass wir nur eine annotationsbasierte Konfiguration verwenden. Anschließend geben wir die Pakete an, die nach Komponenten und Konfigurationsklassen durchsucht werden sollen.

Schließlich definieren wir den Einstiegspunkt für die Webanwendung - das DispatcherServlet.

Diese Klasse kann die Datei web.xml aus <3.0 Servlet-Versionen vollständig ersetzen .

4. XML-Konfiguration

Lassen Sie uns auch einen kurzen Blick auf die entsprechende XML-Webkonfiguration werfen:

Wir können diese XML-Datei durch die obige WebConfig- Klasse ersetzen .

Zum Starten der Anwendung können wir eine Initializer-Klasse verwenden, die die XML-Konfiguration oder eine web.xml-Datei lädt. Weitere Einzelheiten zu diesen beiden Ansätzen finden Sie in unserem vorherigen Artikel.

5. Schlussfolgerung

In diesem Artikel haben wir uns zwei beliebte Lösungen für das Bootstrapping einer Spring-Webanwendung angesehen, eine mit dem Spring Boot-Webstarter und eine mit der Kernbibliothek spring-webmvc.

Im nächsten Artikel über REST mit Spring beschäftige ich mich mit dem Einrichten von MVC im Projekt, der Konfiguration der HTTP-Statuscodes, dem Marshalling von Nutzdaten und der Aushandlung von Inhalten.

Wie immer ist der in diesem Artikel vorgestellte Code auf Github verfügbar. Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.

REST unten

Ich habe gerade den neuen Learn Spring- Kurs angekündigt , der sich auf die Grundlagen von Spring 5 und Spring Boot 2 konzentriert:

>> Überprüfen Sie den Kurs