O analista Jacó implementou a aplicação TCERestAPI utilizando Java com Spring Boot. A TCERestAPI é apta para o deploy em servidores de aplicação Java preexistentes, mas também suporta a execução standalone do Spring Boot.Para viabilizar ambas as formas de execução da TCERestAPI, Jacó precisou modificar a classe principal da aplicação, fazendo com que ela estendesse diretamente determinada classe do Spring Boot.Jacó fez com que a classe principal da TCERestAPI estendesse a classe do Spring Boot:v
ASpringBootStarterTomcat;
BSpringBootServletInitializer;
CSpringBootStarterUndertow;
DServletContextInitializerBeans;
ESpringServletContainerInitializer.
Revelar gabarito e comentário▾
GabaritoB — SpringBootServletInitializer;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Spring Boot – Deploy em servidor externo
Gabarito: letra B. Para que uma aplicação Spring Boot possa ser implantada tanto em modo standalone (via main()) quanto em um servidor de aplicação Java tradicional (como Tomcat, Jetty ou Undertow), a classe principal deve estender a classe SpringBootServletInitializer e sobrescrever o método configure(). Essa classe permite que o Spring Boot seja inicializado como um servlet dentro de um container web, mantendo a compatibilidade com a execução standalone.
Alternativa A — ❌ Incorreta
SpringBootStarterTomcat é um starter (dependência) que configura o Tomcat embarcado, não é uma classe para estender. Starters são adicionados ao pom.xml/build.gradle, não herdados.
Alternativa B — ✅ Correta ⟵ GABARITO
SpringBootServletInitializer é a classe que a documentação oficial do Spring Boot indica para ser estendida quando se deseja gerar um arquivo WAR que funcione em servidores de aplicação tradicionais. Ao estendê-la, a aplicação pode ser empacotada como WAR e implantada em qualquer container servlet compatível com Servlet 3.0+, além de ainda poder ser executada como JAR standalone.
Alternativa C — ❌ Incorreta
SpringBootStarterUndertow também é um starter (dependência) para usar o Undertow embarcado, não uma classe de configuração para deploy externo.
Alternativa D — ❌ Incorreta
ServletContextInitializerBeansnão existe na API do Spring Boot. É um nome inventado que confunde com o conceito de ServletContextInitializer (interface) e beans do Spring, mas não há classe com esse nome.
Alternativa E — ❌ Incorreta
SpringServletContainerInitializer é uma interface do Servlet API (javax.servlet) utilizada pelo Spring para inicialização programática, mas não é a classe que a classe principal deve estender. A classe correta é a própria SpringBootServletInitializer do Spring Boot.
PEGA ESSA DICA!
Para lembrar: a classe que permite deploy em servidor externo tem nome composto por "SpringBootServletInitializer" – pense em "inicializador do servlet" (é ela que configura o ServletContext para o Spring Boot rodar dentro de um container). Já os nomes com "Starter" referem-se a dependências de construção, não a classes para herança.