Spring WebFlux Code Generator

Spring BootWebFluxCQRSDDDR2DBC

🚀 Introduction

La structuration d’une architecture backend propre, modulaire et réactive peut rapidement devenir répétitive et chronophage. Le Spring WebFlux Code Generator répond à ce défi en proposant un outil de génération automatique de code basé sur Spring Boot, Spring WebFlux, R2DBC et les principes DDD et CQRS. Contrairement à d’autres solutions, il ne dépend pas d’Axon et offre une totale liberté d’implémentation.

🎯 Objectif

Automatiser la création de code backend structuré en quatre couches bien définies :

  • Domain : Modèles, Ă©vĂ©nements, objets de valeur
  • Application : Use cases, commandes, requĂŞtes, DTO
  • Infrastructure : EntitĂ©s, mapping, repository R2DBC, configuration
  • Presentation : ContrĂ´leurs REST et SSE

Le tout, en exploitant les atouts suivants :

  • Spring WebFlux pour un traitement non-bloquant
  • R2DBC pour la persistance rĂ©active
  • SSE (Server Sent Events) pour le streaming temps rĂ©el
  • Mustache comme moteur de templates pour gĂ©nĂ©rer le code

đź’  Stack Technique

  • Spring Boot 3+
  • Spring WebFlux
  • Spring R2DBC
  • PostgreSQL
  • Mustache (template engine)
  • Swagger/OpenAPI
  • Java 17+

📦 Architecture Générée

ddd_layers.png source: https://www.hibit.dev/posts/15/domain-driven-design-layers

project-root/
├── domain/
│   └── model, events, valueObjects
├── application/
│   └── usecases, commands, queries, handlers, dto
├── infrastructure/
│   └── repository, entity, config
├── presentation/
│   └── controller (REST, SSE)

⚙️ Utilisation

Pour générer une entité complète :

POST http://127.0.0.1:8070/api/v1/generator/all
Accept: application/x-ndjson
Content-Type: application/json

{
    "outputDir": "/Users/pcoundia/projects/cqrs-rabbitmq-webflux-starter/src/main/java/com/pcoundia/transactions",
    "definition": {
      "name": "Transaction",
      "table": "transactions",
      "fields": [
        { "name": "id", "type": "String" },
        { "name": "reference", "type": "String" },
        { "name": "amount", "type": "Double" }
      ]
    }
}

📱 Domaines d’application

  • Systèmes temps rĂ©el (finance, IoT, messagerie)
  • Backends orientĂ©s microservices
  • Dashboards de monitoring
  • Applications SaaS back-office

👉 Voir le projet généré : GitHub - cqrs-webflux-starter

Documentation générée

api_webflux_generator.png

Ce projet démontre la puissance de l’automatisation dans les architectures modernes. Il constitue une excellente base pour tout projet ambitieux nécessitant une gestion claire et efficace de la logique métier.

Ce projet est en constante évolution, restez connecté sur github.

Auteur : Papa COUNDIA