Skip to content

Instantly share code, notes, and snippets.

@andersonbuenos
Last active September 2, 2025 06:14
Show Gist options
  • Select an option

  • Save andersonbuenos/32a78b6b353bc9c637e9421f692444c7 to your computer and use it in GitHub Desktop.

Select an option

Save andersonbuenos/32a78b6b353bc9c637e9421f692444c7 to your computer and use it in GitHub Desktop.
Encontro 02 — Visão geral do MVC (Java)

Encontro 02 — Visão geral do MVC (Java)

O que é MVC?

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:

Model (Modelo)

  • Representa os dados e as regras de negócio.

  • Exemplo: classes Cliente, Pedido, Produto.

  • No Spring Boot: Entities (JPA) + Repositories.

View (Visão)

  • É 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.

Controller (Controlador)

  • 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.

Resumindo

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

Por que usar

  • 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).

Como funciona fluxo no Spring Boot MVC

  • 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
Loading

Exemplo do dia a dia: “assar bolo”

  • 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.

Quando usar

  • 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.

Alertas e boas práticas

  • Evite “Controller gordo”: mova regras para Services.
  • Evite “View com lógica”: mantenha templates simples.
  • Mantenha Models coesos (entidades focadas no domínio).

“Exemplos de View”

  • App web/mobile que consome a API.
  • Postman/Insomnia (durante desenvolvimento).
  • Docs interativas (Swagger UI) e testes da API.

Estrutura típica (Spring Boot)

  • 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment