Nrich ist eine bei CROZ entwickelte Java-Bibliothek, deren Zweck es ist, die Entwicklung von Anwendungen auf der JVM ein wenig zu vereinfachen. Es wurde durch die Kombination von Modulen, die sich bei mehreren Projekten als nützlich erwiesen haben, in einer gemeinsamen Bibliothek erstellt. Die Bibliothek basiert auf dem Spring Framework und stellt daher Spring Boot-Starter für die meisten Module bereit, um die Konfiguration zu erleichtern.
Die meisten Funktionsgruppen bestehen aus mehreren Modulen:
api
und enthält Klassen, die die API des Moduls darstellen (Dienstschnittstellen, Parameter, Rückgabetypen ...)spring-boot-starter
und enthält die Spring Boot-Autokonfiguration des angegebenen ModulsIn der Spring Boot-Umgebung sollten nur Spring Boot-Startermodule als Abhängigkeiten hinzugefügt werden.
Die folgende Tabelle enthält Nrich-Versionen mit einer entsprechenden Mindestversion von Java und Spring.
Nrich-Version | Java-Version | Spring Boot-Version |
---|---|---|
1.0.x - 1.1.x | 1.8 | 2.3.3.FREIGABE |
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 besteht aus folgenden Modulen:
Bietet verwaltete Abhängigkeiten für alle Nrich-Module sowie für Bibliotheken, die in den Modulen verwendet werden, die nicht durch Spring Boot-Abhängigkeiten abgedeckt sind.
Dieses Modul enthält allgemeine Klassen, die in der gesamten Bibliothek verwendet werden.
Das Modul ermöglicht eine einfachere Ver- und Entschlüsselung, indem es Methodenergebnisse verschlüsseln und Methodenargumente entschlüsseln kann. Methoden, deren Ergebnisse verschlüsselt und/oder Argumente entschlüsselt werden sollen, können mithilfe von Anmerkungen oder als in der Eigenschaftendatei (z. B. application.yml
) angegebene Eigenschaften markiert werden.
Bietet eine einfachere Erstellung von Excel-Berichten aus bereitgestellten Daten und Vorlagen. Die Standardimplementierung verwendet Apache POI
Bibliothek, versucht jedoch, die Verwendung zu vereinfachen.
Bietet die Zuordnung serverseitiger Klasseneinschränkungen zu clientseitigen Formulareinschränkungen. Der Zweck von nrich-form-configuration
besteht darin, einen zentralen Ort für Einschränkungsdefinitionen bereitzustellen. Der Client registriert ein Formular bei der Klasse, die Einschränkungen definiert, wodurch er Informationen für das registrierte Formular anfordern kann. Die bereitgestellten Informationen enthalten Einschränkungen mit ihren Fehlermeldungen, die in der Klasse angegeben sind. Der Kunde ist dann für die Bearbeitung und Übernahme in das Formular verantwortlich.
Legt häufig verwendete Standardwerte für Standard-Jackson-Eigenschaften fest (als Beispiel FAIL_ON_EMPTY_BEANS: false
), um Wiederholungen in Projekten zu vermeiden. Das Modul stellt außerdem Jackson-Module bereit, die leere Zeichenfolgen in Null serialisieren und Klassennamen in vollqualifizierte Klassennamen für Klassen serialisieren, die mit @Entity
-Annotation annotiert sind oder aus einem in einer bestimmten Liste definierten Paket stammen.
Bietet einen Protokollierungsdienst für eine konsistente Fehlerprotokollierung in einem Standardformat. Der bereitgestellte Protokollierungsdienst kann auch Ausführlichkeit und Protokollierungsstufen für jede Ausnahme auflösen. Dieses Modul wird im Modul nrich-webmvc zur Ausnahmeprotokollierung verwendet, kann aber problemlos durch eine andere benutzerdefinierte Implementierung ersetzt werden.
Gedacht für das Hinzufügen bestimmter Benachrichtigungen zur serverseitigen Antwort, die später auf der Clientseite angezeigt werden können. nrich-notification
unterstützt drei verschiedene Schweregrade der Benachrichtigung und kann auch eine Liste von Validierungsfehlern enthalten. Die Definition und Auflösung von Nachrichten wird mit MessageSource
Funktion von Spring realisiert.
Vereinfacht die Verwaltung bestimmter JPA-Entitäten und bietet eine formatierte Darstellung davon, die clientseitig interpretiert und dynamische Formulare und Raster erstellen kann. Generierte Formulare und Raster können ohne zusätzliche serverseitige Implementierung zur Entitätsbearbeitung verwendet werden. Das Modul bietet außerdem Methoden zum Suchen, Erstellen, Aktualisieren und Löschen von Entitäten über eine REST-API.
Vereinfacht die Abfrage von Entitäten. nrich-search
basiert auf der Spring Data JPA-Bibliothek und wurde entwickelt, um die Erstellung von Abfragen für verschiedene Suchformulare auf der Clientseite zu vereinfachen. Abfragen können automatisch aus verschiedenen Eingabetypen gebildet werden, beispielsweise einer Abfrageklasse oder einer Zeichenfolge mit einer Liste von Suchfeldern. Außerdem wird eine spezielle Konfigurationsklasse verwendet, um zu definieren, wie bereitgestellte Abfragewerte bei der Abfrageerstellung verwendet werden.
Gedacht als Ersatz für die CSRF-Funktionalität von Spring Security. nrich-security-csrf
funktioniert sowohl mit Spring Web MVC- als auch mit WebFlux-Bibliotheken. Clients sollten die anfängliche Token-URL definieren und anschließend das generierte Token bei jeder Anfrage in einem Header oder als Parameter senden.
Fügt Spring Boot zusätzliche Funktionalität hinzu, die in Nrich verwendet wird.
Enthält Dienstprogrammklassen für den Spring-Zugriff, z. B. ApplicationContextHolder
zum Auflösen von ApplicationContext
aus dem statischen Kontext.
Enthält zusätzliche jakarta-validation-api
Einschränkungen und Validatoren, die sich als häufig verwendet erwiesen haben, wie z. B. NotNullWhen
Validator.
Bietet zusätzliche Funktionalität, die auf dem Spring Web MVC-Framework basiert. Der Hauptzweck besteht darin, Ausnahmen über NotificationErrorHandlingRestControllerAdvice
zu behandeln, das Ausnahmen behandelt, indem es sie protokolliert und dann Benachrichtigungen mit der Beschreibung der Ausnahme erstellt und an die Clientseite sendet. Das Modul verwendet das Modul nrich-notification für die Benachrichtigungsverarbeitung und nrich-logging für die Protokollierung. nrich-webmvc
fügt außerdem zusätzliche Klassen hinzu, die die Bindung (dh die Umwandlung einer leeren Zeichenfolge in Null) und die Auflösung des Gebietsschemas übernehmen.