Nouveau projet Spring Boot DYNORS — procédure et pièges récents
Guide pour démarrer une nouvelle appli (com.dynors.*, PostgreSQL, JWT, inter-app) sans retomber dans les écarts observés sur les projets Dawalale et le workspace local dynors/ (plusieurs clones).
1. Où cloner et où committer
- Sur le poste de travail, le dossier
dynors/est souvent un répertoire parent avec plusieurs clones côte à côte (core/,dynors-projects/dawalale/, etc.), chacun avec son dépôt Git. - Ne pas supposer un unique remote pour tout le dossier parent : les commits et pushes se font dans le dépôt de l’application concernée.
- Pour une nouvelle app satellite : créer le dépôt GitLab, cloner sous
dynors-projects/<nom>/(ou autre convention d’équipe), travailler dans ce dossier.
Voir aussi : Structure Git & configuration projet.
2. Gradle — BOM et dépendances core
gradle.properties:dynors.core.version=<release>— éviter-SNAPSHOTpour les builds applicatifs ; consulter Versions et dépendances (core).build.gradle.kts:implementation(platform("com.dynors:dynors-core-bom:…"))puisdynors-commons,dynors-security,dynors-db, etc. sans version explicite sur les modules couverts par le BOM.- Package Registry GitLab : token
read_api+read_registry— voir le Guide projets clients et l’onboarding équipe.
3. PostgreSQL uniquement — retirer le driver Mongo du classpath
Problème : le module dynors-db peut tirer transitivement org.mongodb. Au démarrage, Spring tente parfois une connexion vers localhost:27017 → erreurs ou logs inutiles alors que l’app n’utilise que JDBC / PostgreSQL.
Correctif Gradle (Kotlin) — exclusions sur dynors-security et dynors-db (les deux : dynors-security ré-importe dynors-db en transitif avec le driver) :
implementation("com.dynors:dynors-security") {
exclude(group = "org.mongodb")
}
implementation("com.dynors:dynors-db") {
exclude(group = "org.mongodb")
}
Vérification : ./gradlew dependencies --configuration runtimeClasspath | grep -i mongo ne doit rien afficher.
4. JPA / Liquibase / PostgreSQL — @Lob sur String
Problème : avec Hibernate 6 et PostgreSQL, @Lob sur String peut mapper vers le type oid, alors que Liquibase définit souvent des colonnes TEXT → incohérence schéma / erreurs runtime.
Correctif : pour les longs textes, utiliser par exemple @JdbcTypeCode(SqlTypes.LONGVARCHAR) + @Column(columnDefinition = "text"), aligné sur le changeset Liquibase.
Voir : Base de données multi-tenant.
5. dynors-notify — e-mails / SMS
- Bibliothèque embarquée dans l’app : pas de serveur NOTIFY central ; chaque déploiement configure
dynors.notify.*. - Dev :
stub: trueévite les appels réseau. Recette / prod :stub: false+ secrets (Brevo, etc.) via variables d’environnement ou Vault — jamais de clés en clair dans Git.
6. dynors-events — bus d’événements
- Par défaut
dynors.events.enabled=false: comportement no-op (aucun broker requis). - Pour publier sur un broker :
enabled: true+provider(rabbitmq,kafka,redis,in-memorypour tests).
Documentation d’architecture (référence équipe / dépôt dynors) : événements domaine, naming — voir les annexes et le dépôt core si besoin.
7. Inter-app et sécurité
- Appels entre applications DYNORS :
InterAppCallServiceet gateway SLY, pas d’URL codée en dur dans le métier. - JWT et tenant : dynors-security.
→ Routage inter-app SLY · Sécurité & Auth
8. Doc publiée (ce site) vs dépôt de l’app
- doc-internal / MkDocs : guides transverses (ce chapitre, notify, logging, multi-tenant, SLY).
- README, CI/CD et
application.ymldu dépôt GitLab de l’application : référence pour le déploiement concret de cette appli.
9. Checklist rapide « nouveau backend Spring »
| Étape | Action |
|---|---|
| 1 | Créer / cloner le dépôt de l’app, commits dans ce repo. |
| 2 | Importer le BOM dynors-core-bom + accès Package Registry. |
| 3 | Exclure org.mongodb sur dynors-security et dynors-db. |
| 4 | Configurer application.yml : dynors.*, datasource, dynors.notify.*, dynors.events.* si besoin. |
| 5 | Liquibase + entités : attention @Lob / TEXT / oid sur PostgreSQL. |
| 6 | Tests : profil test, H2 ou Testcontainers selon le projet. |
Dernière mise à jour : 2026-04-13 — synthèse issue des mises en œuvre Dawalale (Mongo, JPA) et des règles d’organisation des dépôts DYNORS.