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
- A)SpringBootStarterTomcat;
Errada: SpringBootStarterTomcat não é uma classe para ser estendida pela aplicação principal, mas remete ao servidor embarcado Tomcat.
- B)SpringBootServletInitializer;
Certa: SpringBootServletInitializer é a classe do Spring Boot usada para adaptar a aplicação a um container servlet externo, sem impedir a execução standalone.
- C)SpringBootStarterUndertow;
Errada: SpringBootStarterUndertow também se relaciona ao servidor embarcado Undertow, não à classe de herança da aplicação principal.
- D)ServletContextInitializerBeans;
Errada: ServletContextInitializerBeans é um componente interno de apoio ao contexto servlet, mas não é a classe que a aplicação deve estender.
- E)SpringServletContainerInitializer.
Errada: SpringServletContainerInitializer pertence ao mecanismo de inicialização do contêiner, não à classe que a aplicação principal estende.
Gabarito: B
Quando voce quer que uma aplicação Spring Boot rode em dois cenários, isto é, como executável standalone e também dentro de um servidor de aplicações Java tradicional, a classe principal costuma estender uma classe específica do Spring Boot para apoiar esse modo de implantação. Essa classe permite preparar a aplicação para ambiente servlet/container externo, sem perder a possibilidade de subir com o Tomcat embutido no modo standalone. No Spring Boot, a classe usada para esse objetivo é a SpringBootServletInitializer. Ela serve como ponto de integração quando a aplicação será empacotada como WAR e implantada em um servidor como Tomcat, JBoss ou WebLogic. Em termos práticos, ela ajuda o Spring Boot a inicializar a aplicação no contexto do container externo. Já no modo standalone, o Spring Boot continua funcionando normalmente com sua inicialização própria, normalmente a partir do método main e do SpringApplication.run. Ou seja: uma coisa não exclui a outra. A aplicação pode ser preparada para os dois mundos sem drama, como um sistema que usa terno de dia e moletom em casa. Por isso, o gabarito é a alternativa B. As demais opções misturam nomes de classes de configuração, inicializadores internos ou dependências de servidor, mas não são a classe que a classe principal deve estender para habilitar deploy em servidor preexistente.