MVC significa Model–View–Controller, um padrão de arquitetura de software muito usado em aplicações web e desktop. Ele separa a aplicação em três camadas principais, cada uma com uma responsabilidade clara:
-
Representa os dados e as regras de negócio.
-
Exemplo: classes Cliente, Pedido, Produto.
-
No Spring Boot: Entities (JPA) + Repositories.
-
É a interface que o usuário enxerga.
-
Pode ser uma página HTML, JSP, Thymeleaf ou até uma resposta JSON (no caso de APIs REST).
-
No Spring Boot REST, a View é substituída pela resposta em JSON.
-
Faz a ponte entre o usuário e o sistema.
-
Recebe requisições, valida dados, chama o Model/Service, e devolve a resposta para a View.
-
No Spring Boot: classes anotadas com @RestController ou @Controller.
Model = Dados e regras de negócio
View = O que o usuário vê (UI ou JSON)
Controller = O “cérebro” que coordena a interação
- Separação básica de responsabilidades (mais legibilidade e organização).
- Produtividade: frameworks Java oferecem muito suporte (Spring MVC, Jakarta MVC, JSF).
- Curva de aprendizado amigável para apps web CRUD e APIs simples.
- Facilita testes de cada parte (Controller, Service, Repository).
- Cliente (App / Browser / API Client)
- Envia requisição HTTP (JSON, por exemplo).
- Controller
- Recebe a requisição, valida dados e chama o Service.
- Service
- Contém as regras de negócio, chama o Repository.
- Repository
- Comunica-se com o banco via JPA/Hibernate.
- Banco de Dados
- Retorna os dados persistidos ou consultados.
- Resposta
- O fluxo volta: Repository → Service → Controller → Cliente.
flowchart LR
A[Cliente] --> B[DTO Request]
B --> C[Controller]
C --> D[Service]
D --> E[Repository]
E --> F[Banco de Dados]
F --> E
E --> D
D --> C
C --> G[DTO Response]
G --> A
- Model: a receita e o estado do bolo (ingredientes, massa, assando, pronto).
- View: a vitrine/prato onde o bolo é apresentado ao cliente.
- Controller: o atendente que recebe o pedido e coordena a cozinha seguindo a receita.
- Service (comum em Java): o confeiteiro que aplica as técnicas (regras) para fazer o bolo.
- Aplicações web CRUD e APIs simples/moderadas.
- Projetos que precisam nascer rápido com base em um framework (Spring Boot).
- Equipes pequenas ou início de produto.
- Evite “Controller gordo”: mova regras para Services.
- Evite “View com lógica”: mantenha templates simples.
- Mantenha Models coesos (entidades focadas no domínio).
- App web/mobile que consome a API.
- Postman/Insomnia (durante desenvolvimento).
- Docs interativas (Swagger UI) e testes da API.
- controller/ (camada web: @Controller/@RestController)
- service/ (regras de negócio e orquestração)
- repository/ (acesso a dados via JPA/SQL)
- model/ ou domain/ (entidades, DTOs, validações)