Questão de Programação — Frameworks em Programação — Quadrix 2025
Programação›Frameworks em Programação
Código
qg595978
Banca
Quadrix
Órgão
CRA-SP
Ano
2025
Nível
Superior
Cargo
Analista II - Desenvolvimento de Sistemas
Um desenvolvedor Java vai criar uma nova API REST usando Spring e deseja evitar configuração manual extensa (XML ou classes de configuração) para tarefas comuns, como definir o DataSource, configurar o Spring MVC e iniciar um servidor web embutido (por exemplo, Tomcat).Com base nessa situação hipotética, assinale a opção que apresenta o principal recurso do Spring Boot que, seguindo o princípio de “convenção acerca da configuração”, atende a esse requisito.
Ainversão de controle (IoC)
BProject Reactor
CProgramação orientada a aspectos (AOP)
DSpring Data JPA
Eautoconfiguração
Revelar gabarito e comentário▾
GabaritoE — autoconfiguração
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 e o princípio de convenção sobre configuração
Gabarito: letra E. O recurso do Spring Boot que atende ao requisito de evitar configuração manual extensa — definindo automaticamente o DataSource, configurando o Spring MVC e iniciando o servidor web embutido — é a autoconfiguração, que materializa o princípio de "convenção sobre configuração" (convention over configuration). As demais alternativas (IoC, Project Reactor, AOP e Spring Data JPA) são recursos importantes do ecossistema Spring, mas não são o mecanismo responsável por essa configuração automática.
A autoconfiguração é o coração do Spring Boot. Quando você adiciona uma dependência como spring-boot-starter-web ou spring-boot-starter-data-jpa, o Spring Boot, por meio de classes anotadas com @Configuration e @ConditionalOnClass, @ConditionalOnMissingBean, entre outras, verifica o classpath e configura automaticamente os beans necessários. Por exemplo, se o H2 estiver no classpath e não houver um DataSource definido, o Spring Boot cria um DataSource embutido. Se o Tomcat estiver presente, ele inicia um servidor web embutido. Tudo isso sem XML e sem classes de configuração extensas.
O princípio de "convenção sobre configuração" significa que o framework assume um comportamento padrão sensato, que pode ser sobrescrito quando necessário. O Spring Boot adota essa filosofia de forma radical: ele "opina" sobre a melhor configuração e a aplica automaticamente, permitindo que o desenvolvedor comece com o mínimo de esforço. Isso contrasta com o Spring tradicional, que exigia configuração manual de cada bean, datasource, view resolver, etc.
Para entender a questão, é essencial distinguir os conceitos:
Inversão de Controle (IoC): é um princípio de design no qual o fluxo de controle de um programa é invertido — em vez de o código chamar o framework, o framework chama o código. O Spring implementa IoC por meio do contêiner que gerencia os beans. É a base do Spring, mas não é o que configura automaticamente o DataSource ou o servidor web.
Project Reactor: é uma biblioteca reativa para construir aplicações não bloqueantes, baseada na especificação Reactive Streams. Não tem relação com configuração automática.
AOP (Programação Orientada a Aspectos): permite separar preocupações transversais (como logging, transações, segurança) em aspectos. Não configura infraestrutura automaticamente.
Spring Data JPA: é um módulo que facilita o acesso a dados com JPA, reduzindo o código de repositórios. Ele depende da autoconfiguração do Spring Boot para funcionar sem configuração manual, mas não é o recurso que faz a autoconfiguração em si.
A pegadinha da questão está em confundir o mecanismo (autoconfiguração) com os beneficiários desse mecanismo (Spring Data JPA, por exemplo). O Spring Data JPA é um módulo que se beneficia da autoconfiguração, mas não é ele que a realiza. Da mesma forma, o IoC é um princípio mais amplo, que o Spring Boot usa, mas não é o recurso específico que atende ao requisito descrito.
Na prática, quando você cria um projeto Spring Boot com o Spring Initializr e adiciona as dependências, a autoconfiguração age nos bastidores: configura o DataSource, o EntityManagerFactory, o JdbcTemplate, o DispatcherServlet, o Tomcat, etc. Você só precisa fornecer as propriedades em application.properties ou application.yml quando quiser sobrescrever o padrão.
NÃO CAIA NESSA!
A banca explora a confusão entre o recurso que faz a configuração automática (autoconfiguração) e os módulos que usam essa configuração. O candidato pode ser tentado a marcar "Spring Data JPA" por associá-lo à configuração de banco, mas o Spring Data JPA apenas consome a autoconfiguração — quem a realiza é o próprio Spring Boot. Lembre-se: a autoconfiguração é o mecanismo; os starters e módulos são os beneficiários.
Spring Boot: convenção sobre configuração: Autoconfiguração (mecanismo) (Verifica classpath, Cria beans automaticamente, Inicia servidor embutido); Beneficiários (usam a autoconfiguração) (Spring Data JPA, Spring MVC, DataSource); Distratores (não configuram) (IoC (princípio de design), Project Reactor (reativo), AOP (aspectos))
Alternativa A — ❌ Incorreta
A inversão de controle (IoC) é um princípio de design no qual o contêiner do Spring gerencia o ciclo de vida dos objetos e suas dependências. Embora seja fundamental para o Spring, ela não é o recurso que configura automaticamente o DataSource, o Spring MVC ou o servidor web. A IoC é a base sobre a qual a autoconfiguração opera, mas não é o mecanismo de convenção sobre configuração.
Alternativa B — ❌ Incorreta
O Project Reactor é uma biblioteca reativa para programação assíncrona e não bloqueante, baseada na Reactive Streams. Ele é usado em aplicações web reativas (Spring WebFlux), mas não tem relação com a configuração automática de infraestrutura. É um distrator para quem confunde "reativo" com "automático".
Alternativa C — ❌ Incorreta
A Programação Orientada a Aspectos (AOP) é um paradigma que permite modularizar preocupações transversais, como logging, segurança e transações. O Spring AOP é um módulo do framework, mas não configura automaticamente o ambiente. É um recurso complementar, não o responsável pela convenção sobre configuração.
Alternativa D — ❌ Incorreta
O Spring Data JPA é um módulo que simplifica o acesso a dados com JPA, fornecendo repositórios prontos. Ele depende da autoconfiguração do Spring Boot para funcionar sem configuração manual, mas não é ele que realiza a configuração automática. A banca coloca essa alternativa para testar se o candidato sabe distinguir o mecanismo do beneficiário.
Alternativa E — ✅ Correta ⟵ GABARITO
A autoconfiguração é o recurso do Spring Boot que, seguindo o princípio de "convenção sobre configuração", configura automaticamente o DataSource, o Spring MVC e o servidor web embutido (Tomcat, Jetty, etc.) com base nas dependências presentes no classpath. Ela elimina a necessidade de configuração manual extensa, permitindo que o desenvolvedor comece com o mínimo de esforço.