🚀 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:

  1. Qual projeto você escolheu fazer (E-commerce ou Rede Social)?
  2. Escreva a lista de rotas (pelo menos ) que o seu projeto terá, dizendo o método HTTP e o que cada uma faz.
  3. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 19 Java_UltronP1) e clique em Commit to main.
  2. 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):

  1. Escolhi fazer o projeto de E-commerce.
  2. Rotas:
    • POST /register - Cadastra um novo cliente.
    • POST /login - Faz login e devolve o token.
    • GET /produtos - Lista todos os produtos da loja.
  3. 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!

Capitulo Anterior | Proximo Capitulo