💎 Gestão de Estoques
Para transformar o processo completo de construção da nossa aplicação em um guia didático eficaz para alunos, a melhor abordagem é dividir o conteúdo em módulos bem definidos, onde cada um representa um marco de aprendizado claro e constrói sobre o anterior.
Considerando a complexidade e a variedade de conceitos que abordamos (do banco de dados ao JWT e ao frontend), a separação ideal seria em 8 módulos.
Esta divisão permite que os alunos foquem em um conjunto coeso de habilidades por vez, desde a fundação do backend até a criação da interface do usuário e o deploy, facilitando a absorção e a prática.
📚 Estrutura Modular Proposta para o Guia Didático
Aqui está o detalhamento de como os 8 módulos podem ser organizados para maximizar o aprendizado.
Módulo 1: 🏛️ Fundamentos e Persistência de Dados
Objetivo: Construir a base da aplicação. Ao final, o aluno terá uma aplicação que se conecta a um banco de dados e entende a estrutura dos dados, mas ainda sem lógica de negócio ou interface.
- Aula 1.1: Gênese do Projeto (Configuração no Spring Initializr).
- Aula 1.2: Modelagem do Banco de Dados (Criação do
schema.sqle Diagrama ER). - Aula 1.3: Mapeamento Objeto-Relacional (Criação das entidades
recordno pacotemodel). - Aula 1.4: A Camada de Acesso a Dados (Implementação das interfaces
Repositorycom Spring Data).
Módulo 2: 🧠 Lógica de Negócio e Arquitetura de Serviços
Objetivo: Isolar as regras de negócio do resto do código, aplicando princípios de design de software (SOLID). O aluno aprenderá a criar o “cérebro” da aplicação.
- Aula 2.1: A Importância da Camada de Serviço (Introdução ao Princípio da Responsabilidade Única - SRP).
- Aula 2.2: Desacoplando as Camadas com DTOs (Data Transfer Objects) e Mappers.
- Aula 2.3: Programando para Interfaces (Definição da
ProdutoServicee o Princípio da Inversão de Dependência - DIP). - Aula 2.4: Implementando a Lógica de Negócio (Criação da classe
ProdutoServiceImpl).
Módulo 3: 🔌 Construindo a API REST
Objetivo: Expor a lógica de negócio para o mundo exterior através de endpoints HTTP. Ao final, o aluno terá uma API funcional, porém ainda insegura.
- Aula 3.1: Introdução a APIs REST e
@RestController. - Aula 3.2: Mapeando Verbos HTTP (GET, POST, PUT, DELETE) para operações de CRUD.
- Aula 3.3: Manipulando Respostas HTTP com
ResponseEntity(Status codes: 200, 201, 404, etc.). - Aula 3.4: Implementando os
Controllerspara Produtos, Categorias e Fornecedores.
Módulo 4: 🔒 Segurança de APIs com Spring Security e JWT
Objetivo: Proteger a API. Este é um módulo denso e crucial que ensina o padrão de mercado para segurança em arquiteturas desacopladas.
- Aula 4.1: Teoria: Autenticação Stateless vs. Stateful e o Fluxo JWT (com Diagrama de Sequência).
- Aula 4.2: Implementando o
JwtTokenProvider(Geração e validação dos tokens). - Aula 4.3: O Filtro de Autenticação (Implementação do
JwtAuthenticationFilter). - Aula 4.4: Refatorando o
SecurityConfigpara uma API Stateless. - Aula 4.5: Criando o Endpoint de Login (
AuthenticationController).
Módulo 5: professionalism professionalizando a API: Documentação e Erros
Objetivo: Transformar a API funcional em uma API profissional, fácil de usar e previsível.
- Aula 5.1: Documentação Interativa com OpenAPI (
springdoc-openapi). - Aula 5.2: Enriquecendo a Documentação do Swagger (Anotações
@Operation,@ApiResponse, etc.). - Aula 5.3: A Importância de Respostas de Erro Padronizadas (Criando um
ErrorResponseDTO). - Aula 5.4: Tratamento de Exceções Global com
@RestControllerAdvice.
Módulo 6: ✅ Garantia de Qualidade com Testes
Objetivo: Ensinar o aluno a validar a própria lógica e garantir que futuras alterações não quebrem o código existente.
- Aula 6.1: Fundamentos de Testes (JUnit 5 e o conceito de Mocks com Mockito).
- Aula 6.2: Testes Unitários para a Camada de Serviço (
ProdutoServiceImplTest). - Aula 6.3: (Avançado) Testes de Integração para a Camada de Controller (
@WebMvcTest).
Módulo 7: 🎨 Introdução ao Frontend SPA (Single Page Application)
Objetivo: Mostrar como o backend robusto que foi construído pode ser consumido por um cliente moderno. Este módulo foca nos conceitos, usando JavaScript puro (“vanilla”).
- Aula 7.1: O que é uma SPA? (Comparação com a abordagem de Thymeleaf).
- Aula 7.2: Estruturando o Frontend (Arquivos
index.html,login.html). - Aula 7.3: Consumindo a API (Usando
fetche o móduloapi.js). - Aula 7.4: Gerenciando Autenticação no Cliente (
auth.jselocalStoragepara o JWT). - Aula 7.5: Roteamento no Lado do Cliente (
router.js).
Módulo 8: 🚀 Deployment e Containerização com Docker
Objetivo: Ensinar o aluno a empacotar a aplicação para distribuição e execução em qualquer ambiente.
- Aula 8.1: O que é Docker e por que usar containers?
- Aula 8.2: Criando um
Dockerfilepara a aplicação Spring Boot. - Aula 8.3: (Avançado) Orquestrando a aplicação com um banco de dados PostgreSQL usando
docker-compose.
Tabela Resumo da Sequência Didática
| Módulo | Título | Conceitos-Chave | Resultado Esperado | Próxima Etapa |
| | :--------------------------------------------------- | :---------------------------------------------------- | :--------------------------------------------------------------- | :----------------------- |
| 1 | Fundamentos e Persistência de Dados | Spring Initializr, JDBC, SQL, Entidades, Repositories | Uma aplicação com camada de dados funcional. | Lógica de Negócio |
| 2 | Lógica de Negócio e Arquitetura de Serviços | SOLID, Camada de Serviço, DTOs, Mappers | Lógica de negócio isolada e organizada. | Expor como API |
| 3 | Construindo a API REST | @RestController, ResponseEntity, Verbos HTTP | Endpoints de CRUD funcionais, mas inseguros. | Segurança |
| 4 | Segurança de APIs com Spring Security e JWT | Stateless, JWT, Filtros de Segurança, UserDetailsService | API com autenticação e autorização robustas. | Profissionalização |
| 5 | Profissionalizando a API: Documentação e Erros | OpenAPI/Swagger, @ControllerAdvice, DTOs de Erro | API auto-documentada e com tratamento de erros padronizado. | Testes |
| 6 | Garantia de Qualidade com Testes | Testes Unitários/Integração, JUnit 5, Mockito | Lógica de negócio validada por uma suíte de testes. | Interface do Usuário |
| 7 | Introdução ao Frontend SPA | SPA, fetch, localStorage, Roteamento no Cliente | Um protótipo de frontend que consome a API. | Deploy |
| 8 | Deployment e Containerização com Docker | Containers, Dockerfile, docker-compose | Aplicação empacotada e pronta para ser executada em qualquer lugar. | Fim do Curso |
Esta estrutura de 8 módulos garante uma progressão lógica, abordando teoria e prática em doses equilibradas, o que é ideal para um ambiente de sala de aula.