Módulo 14: Técnicas Avançadas Spring Boot
Objetivos do Módulo
Ao final deste módulo, você será capaz de:
- Compreender programação reativa com Spring WebFlux
- Implementar um sistema de cache com Redis
- Configurar mensageria assíncrona com RabbitMQ
- Criar tarefas agendadas com @Scheduled
- Desenvolver aplicações em tempo real com WebSockets
Pré-requisitos
Antes de começar este módulo, certifique-se de dominar:
- Módulos 1-12: Fundamentos completos de Spring Boot
- Módulo 13: Arquitetura de Microsserviços
- Docker (para Redis, RabbitMQ)
- Conceitos de programação assíncrona
Plano do Módulo
Capítulos Teóricos
| # | Capítulo | Duração | Descrição |
|---|---|---|---|
| 1 | Programação Reativa | 1h30 | WebFlux, Mono, Flux, R2DBC |
| 2 | Cache com Redis | 1h | @Cacheable, @CacheEvict, Redis |
| 3 | Mensageria Assíncrona | 1h15 | RabbitMQ, Spring AMQP |
| 4 | Tarefas Agendadas | 45min | @Scheduled, @Async, Cron |
| 5 | WebSockets | 1h | STOMP, SockJS, tempo real |
Trabalhos Práticos
| # | TP | Duração | Descrição |
|---|---|---|---|
| 1 | Cache Redis | 1h | Cache de uma API |
| 2 | Mensageria RabbitMQ | 1h30 | Sistema de notificações |
| 3 | WebSocket Chat | 1h30 | Aplicação de chat em tempo real |
| 4 | Tarefas Agendadas | 45min | Batch e relatórios automáticos |
Duração total estimada: 10 horas
Conceitos-Chave
Programação Reativa vs Imperativa
Imperativa (Spring MVC):
- Thread por requisição
- Bloqueante
- Simples de entender
- Limitado em escalabilidade
Reativa (WebFlux):
- Event loop
- Não bloqueante
- Alta escalabilidade
- Curva de aprendizado
Quando Usar o Quê
| Caso de Uso | Tecnologia |
|---|---|
| API CRUD tradicional | Spring MVC |
| Alta concorrência | WebFlux |
| Dados frequentemente lidos | Cache Redis |
| Desacoplamento de serviços | RabbitMQ |
| Notificações em tempo real | WebSocket |
| Relatórios periódicos | @Scheduled |
Stack Técnica
| Tecnologia | Versão | Uso |
|---|---|---|
| Spring WebFlux | 3.2.x | Programação reativa |
| Project Reactor | 3.6.x | Mono/Flux |
| Redis | 7.x | Cache distribuído |
| RabbitMQ | 3.12.x | Message broker |
| STOMP | 1.2 | Mensageria WebSocket |
Arquitetura dos TPs
Aplicação Avançada
├── API REST (Spring MVC ou WebFlux)
├── Camada de Cache (Redis)
├── Mensageria (RabbitMQ)
├── WebSocket (STOMP)
└── Tarefas Agendadas
Pronto para Começar
Certifique-se de ter o Docker instalado para este módulo:
# Verificar Docker
docker --version
# Iniciar Redis
docker run -d --name redis -p 6379:6379 redis:7-alpine
# Iniciar RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Começar o Capítulo 1: Programação Reativa