Architecture d'un module
Introduction
L'architecture d'un module Open ENT v3 repose sur une organisation structurée des packages et répertoires. Cette organisation facilite la maintenance, la compréhension du code et la séparation des responsabilités. Voici une description des principaux packages et répertoires standard dans un module typique en technologie Java/Quarkus, ainsi que leur rôle et contenu.
Organisation des packages
Voici une explication de ce que chaque package contient dans un module Open ENT typique avec les répertoires config, service, resource, dto, et exception :
1. service (Services)
Le package service contient les classes qui implémentent la logique métier de l'application. Ces services sont utilisés pour gérer les interactions entre les différentes couches, telles que les accès aux bases de données ou l'application de règles métier.
- Exemples de fichiers :
UserService.java: Gère la logique métier pour les utilisateurs (par exemple, la création, la mise à jour, la suppression d'utilisateurs).
2. resource (Resources)
Le package resource (ou parfois appelé controller ou endpoint) contient les classes qui exposent les API RESTful de l'application. Ces classes reçoivent les requêtes HTTP et renvoient les réponses au client en fonction des actions réalisées via les services.
- Exemples de fichiers :
UserResource.java: Expose les endpoints REST pour les opérations sur les utilisateurs (ex. GET, POST, PUT, DELETE sur les utilisateurs).
3. dto (Data Transfer Object)
Le package dto contient des classes simples qui sont utilisées pour transférer des données entre les différentes couches de l'application ou entre le backend et le frontend via les API REST. Ces classes encapsulent les données des entités et facilitent leur sérialisation/désérialisation.
- Exemples de fichiers :
UserDTO.java: Un objet contenant les informations sur les utilisateurs à envoyer ou recevoir via les API (ex. nom, email, âge).
4. exception (Exceptions)
Ce package contient les classes d'exception personnalisées qui peuvent être utilisées dans l'application pour gérer les erreurs spécifiques. Cela permet de mieux structurer et capturer les erreurs de manière appropriée, puis de renvoyer des messages ou statuts d'erreur clairs via les API.
- Exemples de fichiers :
UserNotFoundException.java: Exception levée lorsque l'utilisateur recherché n'est pas trouvé.
5. resources (Ressources)
Ce répertoire (qui n'est pas un package, mais un répertoire distinct) contient les fichiers de configuration de l'application, tels que les propriétés de configuration, les fichiers XML, et d'autres ressources statiques ou fichiers de configuration.
- Exemples de fichiers :
application.properties: Contient les paramètres de configuration comme les informations de base de données, les ports de serveurs, etc.
6. config (Configuration)
Ce package contient une classe de configuration pour le module (ayant pour nom généralement le module suivi de Config) permettant d'initialiser les différentes dépendances nécessaires pour les ressources et les services.