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, така че може да бъде импортиран и използван както е.