Starten Sie eine Webanwendung mit Spring 5
1. Überblick
Das Tutorial zeigt, wie manBootstrap a Web Application with Spring. macht
Wir werden uns die Spring Boot-Lösung für das Bootstrapping der Anwendung ansehen und auch einen Nicht-Spring Boot-Ansatz sehen.
Wir verwenden hauptsächlich die Java-Konfiguration, sehen uns aber auch die entsprechende XML-Konfiguration an.
Weitere Lektüre:
Konfigurieren Sie eine Spring Boot-Webanwendung
Einige der nützlicheren Konfigurationen für eine Spring Boot-Anwendung.
Migration von Spring zu Spring Boot
Hier erfahren Sie, wie Sie ordnungsgemäß von einem Spring zu einem Spring Boot migrieren.
2. Bootstrapping mit Spring Boot
2.1. Maven-Abhängigkeit
Zunächst benötigen wir die Abhängigkeit vonspring-boot-starter-web:
org.springframework.boot
spring-boot-starter-web
2.1.1.RELEASE
Dieser Starter beinhaltet:
-
spring-web und dasspring-webmvc-Modul, das wir für unsere Spring-Webanwendung benötigen
-
einen Tomcat-Starter, damit wir unsere Webanwendung direkt ausführen können, ohne explizit einen Server zu installieren
2.2. Erstellen einer Spring Boot-Anwendung
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);
}
}
Diese einzelne Anmerkung entspricht der Verwendung von@Configuration,@EnableAutoConfiguration und@ComponentScan.
Standardmäßig werden alle Komponenten in demselben Paket oder darunter gescannt.
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 {
}
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 der@Configuration-Klassen besteht darin, Quellen für Bean-Definitionen für den Spring IoC-Container zu sein. Eine detailliertere Beschreibung finden Sie inofficial docs.
Schauen wir uns auch eine Lösung an, die die Kernbibliothekspring-webmvcverwendet.
3. Bootstrapping mit spring-webmvc
3.1. Maven-Abhängigkeiten
Zunächst benötigen wir die Abhängigkeit vonspring-webmvc:
org.springframework
spring-webmvc
5.0.0.RELEASE
3.2. Die Java-basierte Webkonfiguration
Als Nächstes fügen wir die Konfigurationsklasse hinzu, die die Annotation@Configurationenthält:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class WebConfig {
}
Im Gegensatz zur Spring Boot-Lösung müssen hier explizit@EnableWebMvc zum Einrichten von Spring MVC-Standardkonfigurationen und@ComponentScan zum Angeben von Paketen zum Scannen nach Komponenten definiert werden.
Die Annotation@EnableWebMvc bietet die Spring Web MVC-Konfiguration, z. B. das Einrichten des Dispatcher-Servlets, das Aktivieren der Annotationen@Controller und@RequestMapping und 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 wiradd 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("/");
}
}
Hier erstellen wir einen Spring-Kontext mit der KlasseAnnotationConfigWebApplicationContext. Dies bedeutet, dass wir nur eine auf Anmerkungen basierende 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 -DispatcherServlet.
Diese Klasse kann dieweb.xml-Datei von <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 KlasseWebConfigersetzen.
Zum Starten der Anwendung können wir eine Initializer-Klasse verwenden, die die XML-Konfiguration oder eine web.xml-Datei lädt. Weitere Informationen zu diesen beiden Ansätzen finden Sie unterour previous article.
5. Fazit
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.
Inthe next article on REST with Spring befasse 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 Codeover on Github verfügbar. Dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.