Série: Recolocação e teste prático Java
Episódio 02: Preparando o terreno: Spring Boot, dependências e estrutura inicial
Depois do plano, o conforto do projeto
Com o mapa mental fechado no episódio anterior, a etapa seguinte no fluxo de recolocação é criar uma base que não atrapalhe o resto da solução. O avaliador não deve caçar variáveis escondidas nem adivinhar como subir a aplicação.
O problema por trás da etapa
Depois que o desafio foi lido como arquitetura e não apenas como lista de endpoints, a próxima etapa é criar a base do projeto. Essa parte parece burocrática, mas define o conforto do desenvolvimento inteiro. Um projeto bem iniciado tem dependências coerentes, configurações previsíveis e estrutura de pacotes que já comunica a intenção.
A stack escolhida para a série é Spring Boot com Java 17 ou superior. Para atender ao enunciado, precisamos de Spring Web, Spring Data JPA, Hibernate, H2 em memória, Flyway para migrations, Jakarta Bean Validation e springdoc-openapi para Swagger. Essas peças cobrem o pedido sem inflar o escopo.
A tentação é colocar tudo em pacotes genéricos service, controller e repository. Isso roda, mas não conta a história da arquitetura. Como o PDF exige camadas, a estrutura inicial precisa refletir isso: por exemplo web, application, domain e infra.
A decisão técnica
Na camada web ficam controllers, DTOs HTTP, configuração OpenAPI e handlers de erro. Na application, services ou casos de uso. No domain, entidades, enums e contratos do negócio. Na infra, persistência, repositórios JPA e migrations. Pastas pequenas no início já criam mapa mental consistente.
O application.yml pode definir porta, datasource H2, console H2, JPA, Flyway e caminho do Swagger. Para teste prático, configuração local direta e transparente reduz atrito. H2 em memória, JDBC explícito, Flyway em db/migration, JPA com validação de schema contra migrations — sinal de maturidade mesmo em projeto pequeno.
O Swagger entra cedo: quando o controller aparecer, já haverá lugar para verificar contratos sem montar requests à mão.
Implementando com critério
Escolha nomes que falem a língua do problema: VeiculoController, VeiculoService, CriarVeiculoRequest, VeiculoResponse. Em teste prático, legibilidade é gentileza técnica.
Nesta etapa ainda não resolvemos todas as regras. O objetivo é deixar o projeto compilando, subindo, com Swagger e H2 acessíveis e Flyway aplicando migration inicial. O que vier depois terá onde morar.
Fechamento da etapa
Uma estrutura inicial sugere: web para entrada HTTP, application para orquestração, domain para modelo, infra para banco; migrations em resources/db/migration; manual de arranque em README.md já com comando, URLs e pré-requisitos. Isso evita crescimento desordenado e facilita explicar onde está cada responsabilidade.
Com o terreno preparado, o próximo episódio entra no coração: domínio de veículos, enum de marca e validações.
Como defender essa etapa
Justifique Spring Boot pela integração natural com web, validação, JPA, H2, Flyway e OpenAPI — não só por “ser popular”. Flyway desde o início mostra schema versionado; Swagger cedo alinha documentação à implementação; setup reproduzível é competência de entrega.
Reflexão final: Fundação boa não atrasa: ela evita retrabalho quando a banca abrir o projeto pela primeira vez.
Nota: Cenário anonimizado; série de insights técnicos reutilizáveis.