Краткое введение в SpringBootServletInitializer

Краткое введение в SpringBootServletInitializer

1. обзор

В этом руководстве мы быстро познакомимся сSpringBootServletInitializer.

Это расширениеWebApplicationInitializer, котороеruns a SpringApplication from a traditional WAR archive развернуто в веб-контейнере. Этот класс связывает bean-компонентыServlet,Filter иServletContextInitializer из контекста приложения с сервером.

Расширение классаSpringBootServletInitializer также позволяет нам настраивать наше приложение, когда оно запускается контейнером сервлета, путем переопределения методаconfigure().

2. SpringBootServletInitializerс

Для большей практичности мы покажем пример основного класса, расширяющего классInitializer.

Наш класс@SpringBootApplication с именемWarInitializerApplication расширяетSpringBootServletInitializer и переопределяет методconfigure(). Этот метод используетSpringApplicationBuilder, чтобы просто зарегистрировать наш класс как класс конфигурации приложения:

@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() {
           // ...
        }
    }
}

Теперь, если мы упакуем наше приложение как WAR, мы сможем развернуть его в любом веб-контейнере традиционным способом, который также будет выполнять логику, которую мы добавили в методconfigure().

Если мы хотим упаковать его как файл JAR, нам нужно добавить ту же логику к методуmain(), чтобы встроенный контейнер также мог его забрать.

3. Заключение

В этой статье мы представилиSpringBootServletInitializer и продемонстрировали, как мы можем использовать его для запуска приложений Spring Boot из классического архива WAR.

Доступен полный исходный код примераover on GitHub. Это проект на основе Maven, поэтому его можно импортировать и использовать как есть.