Eine schnelle Einführung in den SpringBootServletInitializer

Eine kurze Einführung in den SpringBootServletInitializer

1. Überblick

In diesem Tutorial werden wir eine kurze Einführung inSpringBootServletInitializer geben.

Dies ist eine Erweiterung vonWebApplicationInitializer, dieruns a SpringApplication from a traditional WAR archive auf einem Webcontainer bereitgestellt hat. Diese Klasse bindet die BeansServlet,Filter undServletContextInitializer aus dem Anwendungskontext an den Server.

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

2. SpringBootServletInitializer

Um praktischer zu werden, zeigen wir ein Beispiel für eine Hauptklasse, die die KlasseInitializererweitert.

Unsere@SpringBootApplication-Klasse namensWarInitializerApplication erweitert dieSpringBootServletInitializer und überschreibt dieconfigure()-Methode. Diese Methode verwendetSpringApplicationBuilder, 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 Methodeconfigure()hinzugefügt haben.

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

3. Fazit

In diesem Artikel haben wirSpringBootServletInitializer 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 verfügbarover on GitHub. Dies ist ein Maven-basiertes Projekt, sodass es importiert und unverändert verwendet werden kann.