Eine kurze Einführung in den SpringBootServletInitializer

1. Übersicht

In diesem Tutorial werden wir eine kurze Einführung in den SpringBootServletInitializer geben .

Dies ist eine Erweiterung von WebApplicationInitializer , mit der eine SpringApplication aus einem herkömmlichen WAR-Archiv ausgeführt wird, das auf einem Webcontainer bereitgestellt wird. Diese Klasse bindet Servlets , Filter und ServletContextInitializer Bohnen aus dem Anwendungskontext auf den Server.

Durch Erweitern der SpringBootServletInitializer- Klasse können wir unsere Anwendung auch konfigurieren, wenn sie vom Servlet-Container ausgeführt wird, indem die configure () -Methode überschrieben wird.

2. SpringBootServletInitializer

Um praktischer zu werden, zeigen wir ein Beispiel für eine Hauptklasse, die die Initializer- Klasse erweitert.

Unsere @ SpringBootApplication- Klasse namens WarInitializerApplication erweitert den SpringBootServletInitializer und überschreibt die configure () -Methode. Diese Methode verwendet SpringApplicationBuilder , um unsere Klasse einfach als Konfigurationsklasse der Anwendung zu registrieren:

@SpringBootApplication public class WarInitializerApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) { return builder.sources(WarInitializerApplication.class); } public static void main(String[] args) { SpringApplication sa = new SpringApplication( WarInitializerApplication.class); sa.run(args); } @RestController public static class WarInitializerController { @GetMapping("/") public String handler() { // ... } } } 

Wenn wir unsere Anwendung jetzt als WAR verpacken, können wir sie auf herkömmliche Weise auf jedem Webcontainer bereitstellen, wodurch auch die Logik ausgeführt wird, die wir in der configure () -Methode hinzugefügt haben .

Wenn wir es als JAR-Datei verpacken möchten, müssen wir der main () -Methode dieselbe Logik hinzufügen , damit der eingebettete Container es auch aufnehmen kann.

3. Fazit

In diesem Artikel haben wir den SpringBootServletInitializer vorgestellt und gezeigt, wie wir damit Spring Boot-Anwendungen aus einem klassischen WAR-Archiv ausführen können.

Der vollständige Quellcode für das Beispiel ist auf GitHub verfügbar. Dies ist ein Maven-basiertes Projekt, sodass es importiert und unverändert verwendet werden kann.