Module 14: Techniques Avancées Spring Boot
Objectifs du Module
À la fin de ce module, vous serez capable de :
- Comprendre la programmation réactive avec Spring WebFlux
- Implémenter un système de cache avec Redis
- Configurer la messagerie asynchrone avec RabbitMQ
- Créer des tâches planifiées avec @Scheduled
- Développer des applications temps réel avec WebSockets
Prérequis
Avant de commencer ce module, assurez-vous de maîtriser :
- Modules 1-12: Bases complètes de Spring Boot
- Module 13: Architecture Microservices
- Docker (pour Redis, RabbitMQ)
- Concepts de programmation asynchrone
Plan du Module
Chapitres Théoriques
| # | Chapitre | Durée | Description |
|---|---|---|---|
| 1 | Programmation Réactive | 1h30 | WebFlux, Mono, Flux, R2DBC |
| 2 | Cache avec Redis | 1h | @Cacheable, @CacheEvict, Redis |
| 3 | Messaging Asynchrone | 1h15 | RabbitMQ, Spring AMQP |
| 4 | Tâches Planifiées | 45min | @Scheduled, @Async, Cron |
| 5 | WebSockets | 1h | STOMP, SockJS, temps réel |
Travaux Pratiques
| # | TP | Durée | Description |
|---|---|---|---|
| 1 | Cache Redis | 1h | Mise en cache d'une API |
| 2 | Messaging RabbitMQ | 1h30 | Système de notifications |
| 3 | WebSocket Chat | 1h30 | Application de chat temps réel |
| 4 | Tâches Planifiées | 45min | Batch et rapports automatiques |
Durée totale estimée: 10 heures
Concepts Clés
Programmation Réactive vs Impérative
Impérative (Spring MVC):
- Thread par requête
- Bloquant
- Simple à comprendre
- Limité en scalabilité
Réactive (WebFlux):
- Event loop
- Non-bloquant
- Scalabilité élevée
- Courbe d'apprentissage
Quand Utiliser Quoi
| Cas d'Usage | Technologie |
|---|---|
| API CRUD classique | Spring MVC |
| Haute concurrence | WebFlux |
| Données fréquemment lues | Cache Redis |
| Découplage services | RabbitMQ |
| Notifications temps réel | WebSocket |
| Rapports périodiques | @Scheduled |
Stack Technique
| Technologie | Version | Usage |
|---|---|---|
| Spring WebFlux | 3.2.x | Programmation réactive |
| Project Reactor | 3.6.x | Mono/Flux |
| Redis | 7.x | Cache distribué |
| RabbitMQ | 3.12.x | Message broker |
| STOMP | 1.2 | WebSocket messaging |
Architecture des TPs
Application Avancée
├── API REST (Spring MVC ou WebFlux)
├── Cache Layer (Redis)
├── Messaging (RabbitMQ)
├── WebSocket (STOMP)
└── Scheduled Tasks
Prêt à Commencer
Assurez-vous d'avoir Docker installé pour ce module:
# Vérifier Docker
docker --version
# Démarrer Redis
docker run -d --name redis -p 6379:6379 redis:7-alpine
# Démarrer RabbitMQ
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
Commencer le Chapitre 1: Programmation Réactive