Questão nº 60

Questão de Tecnologia da Informação · FGV TCE-SP 2023 (nº 60)

FGV2023Agente da Fiscalização - TITecnologia da Informação
Gabarito: Bver comentário ↓

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:

Resposta comentada

Gabarito Alternativa B

Para que uma aplicação Spring Boot possa ser executada tanto com seu servidor embutido (standalone) quanto implantada como um arquivo WAR em um servidor de aplicação Java tradicional (como Tomcat), sua classe principal precisa estender uma classe específica que a adapta ao ciclo de vida de um contêiner de servlets.

  • (A) Incorreta: SpringBootStarterTomcat é uma dependência (starter) que inclui o servidor Tomcat embarcado, não uma classe para estender para deploy em servidores externos. É o distrator mais tentador porque menciona "Tomcat", que é um servidor de aplicação Java, mas seu propósito é para o servidor embutido, não para adaptar a aplicação a um servidor externo preexistente via WAR. A armadilha é confundir a inclusão de um servidor embarcado com a adaptação para um servidor externo.
  • (B) Correta: SpringBootServletInitializer é a classe que a aplicação Spring Boot deve estender para ser configurada como um arquivo WAR e implantada em um contêiner de servlets externo (servidor de aplicação Java preexistente), mantendo a capacidade de execução standalone.
  • (C) Incorreta: SpringBootStarterUndertow é uma dependência (starter) que inclui o servidor Undertow embarcado, não uma classe para estender para deploy em servidores externos.
  • (D) Incorreta: ServletContextInitializerBeans é uma classe interna do Spring Boot usada para gerenciar inicializadores de contexto de servlet, não uma classe que a aplicação principal estenderia.
  • (E) Incorreta: SpringServletContainerInitializer é uma implementação do Spring para a interface ServletContainerInitializer do Servlet API, usada para inicialização programática, mas não é a classe que a aplicação Spring Boot estende diretamente para o deploy de WAR. SpringBootServletInitializer é a abstração correta para este caso.

Fonte: FGV TCE-SP 2023 Agente da Fiscalização - TI (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho