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

1. Общ преглед

В този урок ще преминем през бързо въвеждане на SpringBootServletInitializer .

Това е разширение на WebApplicationInitializer, което изпълнява SpringApplication от традиционен WAR архив, разположен в уеб контейнер. Този клас свързва зърната на 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 архив.

Пълният изходен код за примера е достъпен на GitHub. Това е проект, базиран на Maven, така че може да бъде импортиран и използван както е.