Nrich es una biblioteca Java desarrollada en CROZ cuyo propósito es facilitar un poco el desarrollo de aplicaciones en la JVM. Fue creado combinando módulos que resultaron útiles en múltiples proyectos en una biblioteca común. La biblioteca se basa en Spring Framework y, como tal, proporciona iniciadores Spring Boot para la mayoría de los módulos para facilitar la configuración.
La mayoría de los grupos de funciones se componen de varios módulos:
api
y contiene clases que representan la API del módulo (interfaces de servicio, parámetros, tipos de retorno...)spring-boot-starter
y contiene la configuración automática Spring Boot del módulo especificadoEn el entorno Spring Boot, solo se deben agregar como dependencias los módulos de inicio de Spring Boot.
La siguiente tabla contiene versiones nrich con una versión mínima correspondiente de Java y Spring.
Versión rica | versión java | Versión de arranque de primavera |
---|---|---|
1.0.x - 1.1.x | 1.8 | 2.3.3.LIBERACIÓN |
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 se compone de los siguientes módulos:
Proporciona dependencias administradas para todos los módulos nrich, así como para las bibliotecas utilizadas dentro de aquellos módulos que no están cubiertos por las dependencias de Spring Boot.
Este módulo contiene clases comunes que se utilizan en toda la biblioteca.
El módulo logra un cifrado y descifrado más sencillo al poder cifrar los resultados del método y descifrar los argumentos del método. Los métodos cuyos resultados deben cifrarse y/o cuyos argumentos deben descifrarse se pueden marcar mediante anotaciones o como propiedades especificadas en el archivo de propiedades (como application.yml
).
Proporciona una generación más sencilla de informes de Excel a partir de los datos y plantillas proporcionados. La implementación predeterminada utiliza la biblioteca Apache POI
pero intenta simplificar el uso.
Proporciona mapeo de restricciones de clase del lado del servidor a restricciones de formulario del lado del cliente. El propósito de nrich-form-configuration
es proporcionar un lugar central para las definiciones de restricciones. El cliente registra un formulario en la clase que define restricciones, lo que le permite solicitar información para el formulario registrado. La información proporcionada contiene restricciones con sus mensajes de error, que se especifican en la clase. El cliente es entonces responsable de procesarlos y aplicarlos al formulario.
Establece valores predeterminados comúnmente utilizados para las propiedades estándar de Jackson (como por ejemplo FAIL_ON_EMPTY_BEANS: false
) para evitar repeticiones en proyectos. El módulo también proporciona módulos Jackson que serializan cadenas vacías a nulas y serializan nombres de clases a nombres de clases completamente calificados para clases anotadas con la anotación @Entity
o que provienen de un paquete definido en una lista determinada.
Proporciona un servicio de registro para un registro de errores coherente en un formato estándar. El servicio de registro proporcionado también puede resolver los niveles de detalle y registro para cada excepción. Este módulo se utiliza en el módulo nrich-webmvc para el registro de excepciones, pero se puede reemplazar fácilmente con alguna otra implementación personalizada.
Diseñado para agregar notificaciones específicas a la respuesta del lado del servidor, que luego se pueden mostrar en el lado del cliente. nrich-notification
admite tres niveles de gravedad de notificación diferentes y también puede incluir una lista de errores de validación. La definición y resolución de mensajes se realiza con la función MessageSource
de Spring.
Simplifica la administración de entidades JPA específicas y proporciona una representación formateada de ellas que el lado del cliente puede interpretar y crear formularios y cuadrículas dinámicas. Los formularios y cuadrículas generados se pueden utilizar para editar entidades sin implementación adicional en el lado del servidor. El módulo también proporciona métodos para buscar, crear, actualizar y eliminar entidades a través de una API REST.
Simplifica la consulta de entidades. nrich-search
se basa en la biblioteca Spring Data JPA y se creó como un medio para simplificar la creación de consultas para varios formularios de búsqueda en el lado del cliente. Las consultas se pueden formar automáticamente a partir de diferentes tipos de entradas, como una clase de consulta o una cadena con una lista de campos de búsqueda. Además, se utiliza una clase de configuración especial para definir cómo se utilizan los valores de consulta proporcionados en la creación de consultas.
Diseñado como reemplazo de la funcionalidad csrf de Spring Security. nrich-security-csrf
funciona con las bibliotecas Spring Web MVC y WebFlux. Los clientes deben definir la URL del token inicial y luego enviar el token generado con cada solicitud en un encabezado o como parámetro.
Agrega funcionalidad adicional a Spring Boot que se usa dentro de nrich.
Contiene clases de utilidad para el acceso a Spring, como ApplicationContextHolder
para resolver ApplicationContext
desde un contexto estático.
Contiene validadores y restricciones adicionales jakarta-validation-api
que demostraron ser de uso común, como el validador NotNullWhen
.
Proporciona funcionalidad adicional construida sobre el marco Spring Web MVC. El objetivo principal es manejar excepciones a través de NotificationErrorHandlingRestControllerAdvice
, que maneja las excepciones registrándolas y luego creando y enviando notificaciones al lado del cliente con la descripción de la excepción. El módulo utiliza el módulo nrich-notification para el manejo de notificaciones y nrich-logging para el registro. nrich-webmvc
también agrega clases adicionales que manejan el enlace (es decir, transforma una cadena vacía en nula) y la resolución de configuración regional.