En hurtig introduktion til SpringBootServletInitializer

1. Oversigt

I denne vejledning gennemgår vi en hurtig introduktion af SpringBootServletInitializer.

Dette er en udvidelse af WebApplicationInitializer hvilken kører en SpringApplication fra et traditionelt WAR-arkiv implementeret på en webcontainer. Denne klasse binder Servlet, Filter og ServletContextInitializer bønner fra applikationskonteksten til serveren.

Udvidelse af SpringBootServletInitializer klasse giver os også mulighed for at konfigurere vores applikation, når den køres af servletcontaineren ved at tilsidesætte konfigurer () metode.

2. SpringBootServletInitializer

For at få mere praktisk viser vi et eksempel på en hovedklasse, der udvider Initialiser klasse.

Vores @SpringBootApplication klasse kaldes WarInitializerApplication udvider SpringBootServletInitializer og tilsidesætter konfigurer () metode. Denne metode bruger SpringApplicationBuilder for blot at registrere vores klasse som en konfigurationsklasse for applikationen:

@SpringBootApplication offentlig klasse WarInitializerApplication udvider SpringBootServletInitializer {@Override beskyttet SpringApplicationBuilder konfigurerer (SpringApplicationBuilder builder) {return builder.sources (WarInitializerApplication.class); } public static void main (String [] args) {SpringApplication sa = new SpringApplication (WarInitializerApplication.class); sa.run (args); } @RestController offentlig statisk klasse WarInitializerController {@GetMapping ("/") offentlig strenghåndterer () {// ...}}} 

Hvis vi nu pakker vores applikation som en WAR, vil vi være i stand til at distribuere den på enhver webcontainer på en traditionel måde, hvilket også udfører den logik, vi tilføjede i konfigurer () metode.

Hvis vi vil pakke det som en JAR-fil, skal vi tilføje den samme logik til hoved () metode, så den indlejrede container også kan hente den.

3. Konklusion

I denne artikel introducerede vi SpringBootServletInitializer og demonstrerede, hvordan vi kan bruge det til at køre Spring Boot-applikationer fra et klassisk WAR-arkiv.

Den komplette kildekode til eksemplet er tilgængelig på GitHub. Dette er et Maven-baseret projekt, så det kan importeres og bruges som det er.