Uma introdução rápida ao SpringBootServletInitializer
1. Visão geral
Neste tutorial, faremos uma introdução rápida doSpringBootServletInitializer.
Esta é uma extensão deWebApplicationInitializer queruns a SpringApplication from a traditional WAR archive implantado em um contêiner da web. Esta classe liga os beansServlet,FiltereServletContextInitializer do contexto do aplicativo para o servidor.
Estender a classeSpringBootServletInitializer também nos permite configurar nosso aplicativo quando ele é executado pelo contêiner de servlet, substituindo o métodoconfigure().
2. SpringBootServletInitializer
Para ser mais prático, mostraremos um exemplo de classe principal que estende a classeInitializer.
Nossa classe@SpringBootApplication chamadaWarInitializerApplication estende oSpringBootServletInitializere substitui o métodoconfigure(). Esse método usaSpringApplicationBuilder para simplesmente registrar nossa classe como uma classe de configuração do aplicativo:
@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() {
// ...
}
}
}
Agora, se empacotarmos nosso aplicativo como um WAR, poderemos implantá-lo em qualquer contêiner da web de uma forma tradicional, que também executará a lógica que adicionamos no métodoconfigure().
Se quisermos empacotá-lo como um arquivo JAR, precisaremos adicionar a mesma lógica ao métodomain() para que o contêiner embutido possa pegá-lo também.
3. Conclusão
Neste artigo, apresentamos oSpringBootServletInitializere demonstramos como podemos usá-lo para executar aplicativos Spring Boot a partir de um arquivo WAR clássico.
O código-fonte completo para o exemplo está disponívelover on GitHub. Este é um projeto baseado em Maven, portanto, pode ser importado e usado como está.