Nrich est une bibliothèque Java développée chez CROZ dont le but est de faciliter un peu le développement d'applications sur la JVM. Il a été créé en combinant des modules jugés utiles sur plusieurs projets dans une bibliothèque commune. La bibliothèque est basée sur Spring Framework et, en tant que telle, fournit des démarreurs Spring Boot pour la plupart des modules afin de faciliter la configuration.
La plupart des groupes de fonctionnalités sont composés de plusieurs modules :
api
et contient des classes qui représentent l'API du module (interfaces de service, paramètres, types de retour...)spring-boot-starter
et contient la configuration automatique Spring Boot du module spécifiéDans l'environnement Spring Boot, seuls les modules de démarrage Spring Boot doivent être ajoutés en tant que dépendances.
Le tableau suivant contient des versions nrich avec une version minimale correspondante de Java et Spring.
Version riche | Version Java | Version de démarrage de printemps |
---|---|---|
1.0.x - 1.1.x | 1.8 | 2.3.3.LIBÉRATION |
1.2.x | 1.8 | 2.6.4 |
1.3.x | 1.8 | 2.6.6 |
1.4.x | 1.8 | 2.6.6 |
1.5.x - 1.7.x | 1.8 | 2.7.4 |
1.8.x | 1.8 | 2.7.7 |
2.0.0 | 17 | 3.1.3 |
Nrich est composé des modules suivants :
Fournit des dépendances gérées pour tous les modules nrich ainsi que pour les bibliothèques utilisées dans ces modules qui ne sont pas couvertes par les dépendances Spring Boot.
Ce module contient des classes communes utilisées dans toute la bibliothèque.
Le module permet un cryptage et un déchiffrement plus faciles en étant capable de crypter les résultats de la méthode et de déchiffrer les arguments de la méthode. Les méthodes dont les résultats doivent être chiffrés et/ou les arguments déchiffrés peuvent être marquées à l'aide d'annotations ou en tant que propriétés spécifiées dans le fichier de propriétés (telles que application.yml
).
Fournit une génération plus facile de rapports Excel à partir des données et des modèles fournis. L'implémentation par défaut utilise la bibliothèque Apache POI
mais tente de simplifier l'utilisation.
Fournit un mappage des contraintes de classe côté serveur aux contraintes de formulaire côté client. Le but de nrich-form-configuration
est de fournir une place centrale pour les définitions de contraintes. Le client enregistre un formulaire dans la classe qui définit les contraintes, ce qui lui permet de demander des informations pour le formulaire enregistré. Les informations fournies contiennent des contraintes avec leurs messages d'erreur, qui sont spécifiés dans la classe. Le client est alors responsable de leur traitement et de leur application au formulaire.
Définit les valeurs par défaut couramment utilisées pour les propriétés Jackson standard (par exemple FAIL_ON_EMPTY_BEANS: false
) pour éviter les répétitions dans les projets. Le module fournit également des modules Jackson qui sérialisent les chaînes vides pour null et sérialisent les noms de classe en noms de classe complets pour les classes annotées avec l'annotation @Entity
ou provenant d'un package défini dans une liste donnée.
Fournit un service de journalisation pour une journalisation cohérente des erreurs dans un format standard. Le service de journalisation fourni peut également résoudre les niveaux de verbosité et de journalisation pour chaque exception. Ce module est utilisé dans le module nrich-webmvc pour la journalisation des exceptions mais peut facilement être remplacé par une autre implémentation personnalisée.
Destiné à l'ajout de notifications spécifiées dans la réponse côté serveur, qui peuvent ensuite être affichées côté client. nrich-notification
prend en charge trois niveaux de gravité de notification différents et peut également inclure une liste d'erreurs de validation. La définition et la résolution des messages sont réalisées avec la fonctionnalité MessageSource
de Spring.
Simplifie l'administration des entités JPA spécifiées et fournit une représentation formatée de celles-ci que le côté client peut interpréter et créer des formulaires et des grilles dynamiques. Les formulaires et les grilles générés peuvent être utilisés pour l'édition d'entités sans implémentation supplémentaire côté serveur. Le module fournit également des méthodes pour rechercher, créer, mettre à jour et supprimer des entités via une API REST.
Simplifie l'interrogation des entités. nrich-search
est basé sur la bibliothèque Spring Data JPA et a été créé pour simplifier la création de requêtes pour divers formulaires de recherche côté client. Les requêtes peuvent être automatiquement formées à partir de différents types d'entrées, telles qu'une classe de requête ou une chaîne avec une liste de champs de recherche. En outre, une classe de configuration spéciale est utilisée pour définir la manière dont les valeurs de requête fournies sont utilisées lors de la création de requêtes.
Destiné à remplacer la fonctionnalité csrf de Spring Security. nrich-security-csrf
fonctionne avec les bibliothèques Spring Web MVC et WebFlux. Les clients doivent définir l'URL initiale du jeton, puis envoyer le jeton généré avec chaque requête dans un en-tête ou en tant que paramètre.
Ajoute des fonctionnalités supplémentaires à Spring Boot utilisées dans nrich.
Contient des classes utilitaires pour l'accès Spring, telles que ApplicationContextHolder
pour résoudre ApplicationContext
à partir d'un contexte statique.
Contient des contraintes et des validateurs jakarta-validation-api
supplémentaires qui se sont avérés couramment utilisés, tels que le validateur NotNullWhen
.
Fournit des fonctionnalités supplémentaires basées sur le framework Spring Web MVC. L'objectif principal est de gérer les exceptions via NotificationErrorHandlingRestControllerAdvice
qui gère les exceptions en les enregistrant, puis en créant et en envoyant des notifications au côté client avec la description de l'exception. Le module utilise le module nrich-notification pour la gestion des notifications et nrich-logging pour la journalisation. nrich-webmvc
ajoute également des classes supplémentaires qui gèrent la liaison (c'est-à-dire la transformation d'une chaîne vide en null) et la résolution des paramètres régionaux.