🚀 Capítulo 19: A Era de Ultron P1 (Tema: Vingadores)
NOTE
Este capítulo inicia o projeto final do curso de Backend com Java e Spring Boot. Planeje a estrutura da sua API para que ela seja robusta e não saia do controle!
1. 🎯 Objetivo da Aula
Planejar e iniciar a construção do projeto prático final do curso de Backend com Java e Spring Boot, aplicando os conceitos de arquitetura em camadas, banco de dados (Spring Data JPA) e DTOs.
2. 🏢 O Cenário Prático (Seu Desafio)
No filme Vingadores: Era de Ultron, Tony Stark tenta criar um sistema de inteligência artificial ultra avançado para proteger o planeta Terra. Ele junta as mentes mais brilhantes, conecta os servidores e começa a construir a base do sistema. Porém, como ele fez tudo com pressa e sem seguir os padrões rígidos de arquitetura, o sistema (Ultron) acabou saindo do controle!
Chegou a hora do seu Projeto Final do curso de Java e Spring Boot!
- Você vai construir uma API completa para um sistema real (Sugerimos um mini e-commerce de produtos ou uma rede social de desenvolvedores).
- Nesta Parte , vamos fazer o trabalho do Arquiteto: planejar as tabelas do banco de dados usando Entidades JPA, criar as interfaces de Repositório e organizar as pastas do projeto no padrão profissional de camadas. Seu desafio é construir uma base sólida!
🧠 Fundamentos: A Teoria Traduzida
Para o nosso projeto de E-commerce no Spring Boot, nós vamos seguir a Arquitetura em Camadas (o padrão do mercado):
📁 1. Camada de Domínio (Models/Entities):
Onde ficam as nossas classes @Entity que representam as tabelas do banco de dados (Ex: Usuario e Produto).
🗄️ 2. Camada de Repositório (Repository):
Interfaces que estendem JpaRepository para mexer no banco de dados.
📦 3. Camada de DTO:
Classes para filtrar os dados que entram e saem da API.
🎮 4. Camada de Controle (Rest/Controller):
Onde ficam as classes @RestController com os métodos @GetMapping e @PostMapping que o usuário acessa!
4. 📖 Exemplo Guiado: As Rotas do Sistema
O nosso projeto terá as seguintes rotas organizadas:
Rotas Públicas (Qualquer um acessa):
POST /register: Para criar uma conta nova.POST /login: Para digitar e-mail e senha e receber o Token JWT.GET /produtos: Para qualquer um poder ver a lista de produtos da loja.
Rotas Protegidas (Só quem tem o Token JWT acessa):
POST /produtos: Apenas administradores logados podem cadastrar produtos novos.DELETE /produtos/:id: Apenas administradores logados podem deletar produtos.
5. 🛠️ Prática Obrigatória: O Seu Plano
Preencha o planejamento do seu projeto final respondendo:
- Qual projeto você escolheu fazer (E-commerce ou Rede Social)?
- Escreva a lista de rotas (pelo menos ) que o seu projeto terá, dizendo o método HTTP e o que cada uma faz.
- Qual dessas rotas obrigatoriamente precisará passar pelo Middleware de Autenticação JWT para proteger os dados?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 19 Java_UltronP1) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_19_ultron_p1.md💡 Checkpoint de Lógica
Em projetos Spring Boot reais, para não misturarmos a lógica do banco com a lógica das rotas, os programadores criam uma camada extra chamada Service (Serviço), que fica no meio do caminho entre o Controller e o Repository!
10. 🔥 Desafio de Fixação
Tente desenhar em um papel o diagrama de pastas que você usaria para organizar esse projeto final (Dica: use pacotes como com.seuprojeto.models, com.seuprojeto.repositories).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática Obrigatória (Exemplo de resposta esperada):
- Escolhi fazer o projeto de E-commerce.
- Rotas:
POST /register- Cadastra um novo cliente.POST /login- Faz login e devolve o token.GET /produtos- Lista todos os produtos da loja.
- A rota de cadastrar um produto novo (
POST /produtos) precisará de proteção JWT para que um invasor não saia cadastrando produtos falsos na nossa loja!