Перейти к основному содержимому

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

· 2 мин. чтения

1. Обзор

В этом руководстве мы кратко рассмотрим SpringBootServletInitializer .

Это расширение WebApplicationInitializer , которое запускает SpringApplication из традиционного архива WAR , развернутого в веб-контейнере. Этот класс связывает компоненты Servlet , Filter и ServletContextInitializer из контекста приложения с сервером.

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

2. Инициализатор SpringBootServlet

Для большей практичности мы покажем пример основного класса, который расширяет класс 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.

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