|
| 1 | +--- |
| 2 | +title: "Spring WebFlux Code Generator" |
| 3 | +date: "2025-04-17" |
| 4 | +tags: ["Spring Boot", "WebFlux", "CQRS", "DDD", "R2DBC"] |
| 5 | +excerpt: "Découvrez un générateur de code backend réactif basé sur Spring WebFlux, R2DBC et les principes DDD/CQRS, sans dépendance à Axon." |
| 6 | +author: "Papa COUNDIA" |
| 7 | +link: "https://github.com/coundia/cqrs-webflux-starter" |
| 8 | +--- |
| 9 | + |
| 10 | +## 🚀 Introduction |
| 11 | + |
| 12 | +La structuration d’une architecture backend propre, modulaire et réactive peut rapidement devenir répétitive et chronophage. |
| 13 | +Le **Spring WebFlux Code Generator** répond à ce défi en proposant un outil de génération automatique de code basé |
| 14 | +sur **Spring Boot**, |
| 15 | +**Spring WebFlux**, **R2DBC** et les principes **DDD** et **CQRS**. |
| 16 | +Contrairement à d'autres solutions, |
| 17 | +il ne dépend pas d'Axon et offre une totale liberté d'implémentation. |
| 18 | + |
| 19 | +## 🎯 Objectif |
| 20 | + |
| 21 | +Automatiser la création de code backend structuré en quatre couches bien définies : |
| 22 | + |
| 23 | +- **Domain** : Modèles, événements, objets de valeur |
| 24 | +- **Application** : Use cases, commandes, requêtes, DTO |
| 25 | +- **Infrastructure** : Entités, mapping, repository R2DBC, configuration |
| 26 | +- **Presentation** : Contrôleurs REST et SSE |
| 27 | + |
| 28 | +Le tout, en exploitant les atouts suivants : |
| 29 | + |
| 30 | +- Spring WebFlux pour un traitement non-bloquant |
| 31 | +- R2DBC pour la persistance réactive |
| 32 | +- SSE (Server Sent Events) pour le streaming temps réel |
| 33 | +- Mustache comme moteur de templates pour générer le code |
| 34 | + |
| 35 | +## 💠 Stack Technique |
| 36 | + |
| 37 | +- Spring Boot 3+ |
| 38 | +- Spring WebFlux |
| 39 | +- Spring R2DBC |
| 40 | +- PostgreSQL |
| 41 | +- Mustache (template engine) |
| 42 | +- Swagger/OpenAPI |
| 43 | +- Java 17+ |
| 44 | + |
| 45 | +## 📦 Architecture Générée |
| 46 | + |
| 47 | +```text |
| 48 | +project-root/ |
| 49 | +├── domain/ |
| 50 | +│ └── model, events, valueObjects |
| 51 | +├── application/ |
| 52 | +│ └── usecases, commands, queries, handlers, dto |
| 53 | +├── infrastructure/ |
| 54 | +│ └── repository, entity, config |
| 55 | +├── presentation/ |
| 56 | +│ └── controller (REST, SSE) |
| 57 | +``` |
| 58 | + |
| 59 | +## ⚙️ Utilisation |
| 60 | + |
| 61 | +Pour générer une entité complète : |
| 62 | + |
| 63 | +```bash |
| 64 | +POST http://127.0.0.1:8070/api/v1/generator/all |
| 65 | +Accept: application/x-ndjson |
| 66 | +Content-Type: application/json |
| 67 | + |
| 68 | +{ |
| 69 | + "outputDir": "/Users/pcoundia/projects/cqrs-rabbitmq-webflux-starter/src/main/java/com/pcoundia/transactions", |
| 70 | + "definition": { |
| 71 | + "name": "Transaction", |
| 72 | + "table": "transactions", |
| 73 | + "fields": [ |
| 74 | + { "name": "id", "type": "String" }, |
| 75 | + { "name": "reference", "type": "String" }, |
| 76 | + { "name": "amount", "type": "Double" } |
| 77 | + ] |
| 78 | + } |
| 79 | +} |
| 80 | +``` |
| 81 | +
|
| 82 | +## 📱 Domaines d'application |
| 83 | +
|
| 84 | +- Systèmes temps réel (finance, IoT, messagerie) |
| 85 | +- Backends orientés microservices |
| 86 | +- Dashboards de monitoring |
| 87 | +- Applications SaaS back-office |
| 88 | +
|
| 89 | +👉 Voir le projet généré : [GitHub - cqrs-webflux-starter](https://github.com/coundia/cqrs-webflux-starter) |
| 90 | +
|
| 91 | +# Code généré |
| 92 | +
|
| 93 | +[tree.md](assets/tree.md) |
| 94 | +
|
| 95 | +# Documentation générée |
| 96 | +
|
| 97 | + |
| 98 | +
|
| 99 | +- 🧩 Client SSE Angular : [angular-client-sse](https://github.com/coundia/angular-client-sse) |
| 100 | + |
| 101 | +
|
| 102 | +Ce projet démontre la puissance de l’automatisation dans les architectures modernes. |
| 103 | +Il constitue une excellente base pour tout projet ambitieux nécessitant une gestion claire et efficace de la logique métier. |
| 104 | +
|
| 105 | +Ce projet est en constante évolution, restez connecté sur github. |
| 106 | +
|
0 commit comments