Uma introdução rápida ao SpringBootServletInitializer

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á.