Nrich é uma biblioteca Java desenvolvida na CROZ cujo objetivo é facilitar um pouco o desenvolvimento de aplicações na JVM. Ele foi criado combinando módulos que foram considerados úteis em vários projetos em uma biblioteca comum. A biblioteca é baseada no Spring Framework e, como tal, fornece iniciadores Spring Boot para a maioria dos módulos para facilitar a configuração.
A maioria dos grupos de funcionalidades são compostos por vários módulos:
api
e contém classes que representam a API do módulo (interfaces de serviço, parâmetros, tipos de retorno...)spring-boot-starter
e contém a configuração automática do Spring Boot do módulo especificadoNo ambiente Spring Boot, apenas os módulos iniciais do Spring Boot devem ser adicionados como dependências.
A tabela a seguir contém versões nrich com uma versão mínima correspondente de Java e Spring.
Versão rica | Versão Java | Versão de inicialização Spring |
---|---|---|
1.0.x - 1.1.x | 1.8 | 2.3.3.LIBERAÇÃO |
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 é composto pelos seguintes módulos:
Fornece dependências gerenciadas para todos os módulos nrich, bem como para bibliotecas usadas dentro dos módulos que não são cobertas pelas dependências do Spring Boot.
Este módulo contém classes comuns que são usadas em toda a biblioteca.
O módulo obtém criptografia e descriptografia mais fáceis ao ser capaz de criptografar resultados de métodos e descriptografar argumentos de métodos. Métodos cujos resultados devem ser criptografados e/ou argumentos descriptografados podem ser marcados usando anotações ou como propriedades especificadas no arquivo de propriedades (como application.yml
).
Fornece geração mais fácil de relatórios Excel a partir de dados e modelos fornecidos. A implementação padrão usa a biblioteca Apache POI
, mas tenta simplificar o uso.
Fornece mapeamento de restrições de classe do lado do servidor para restrições de formulário do lado do cliente. O objetivo da nrich-form-configuration
é fornecer um local central para definições de restrições. O cliente cadastra um formulário na classe que define restrições, o que lhe permite solicitar informações para o formulário cadastrado. As informações fornecidas contêm restrições com suas mensagens de erro, que são especificadas na classe. O cliente é então responsável por processá-los e aplicá-los ao formulário.
Define padrões comumente usados para propriedades Jackson padrão (como exemplo FAIL_ON_EMPTY_BEANS: false
) para evitar repetição em projetos. O módulo também fornece módulos Jackson que serializam strings vazias para null e serializam nomes de classes para nomes de classes totalmente qualificados para classes anotadas com a anotação @Entity
ou que são de um pacote definido em uma determinada lista.
Fornece um serviço de registro para registro de erros consistente em um formato padrão. O serviço de registro fornecido também pode resolver níveis de detalhamento e registro para cada exceção. Este módulo é usado no módulo nrich-webmvc para registro de exceções, mas pode ser facilmente substituído por alguma outra implementação personalizada.
Destinado à adição de notificações especificadas na resposta do lado do servidor, que pode ser mostrada posteriormente no lado do cliente. nrich-notification
suporta três níveis diferentes de gravidade de notificação e também pode incluir uma lista de erros de validação. A definição e resolução de mensagens são realizadas com o recurso MessageSource
do Spring.
Simplifica a administração de entidades JPA especificadas e fornece uma representação formatada delas que o lado do cliente pode interpretar e criar formulários e grades dinâmicos. Formulários e grades gerados podem ser usados para edição de entidades sem implementação adicional no lado do servidor. O módulo também fornece métodos para pesquisar, criar, atualizar e excluir entidades por meio de uma API REST.
Simplifica a consulta de entidades. nrich-search
é baseado na biblioteca Spring Data JPA e foi criado como um meio de simplificar a criação de consultas para vários formulários de pesquisa no lado do cliente. As consultas podem ser formadas automaticamente a partir de diferentes tipos de entradas, como uma classe de consulta ou uma string com uma lista de campos de pesquisa. Além disso, uma classe de configuração especial é usada para definir como os valores de consulta fornecidos são usados na criação da consulta.
Pretendido como um substituto para a funcionalidade csrf do Spring Security. nrich-security-csrf
funciona com bibliotecas Spring Web MVC e WebFlux. Os clientes devem definir a url do token inicial e depois enviar o token gerado com cada solicitação em um cabeçalho ou como parâmetro.
Adiciona funcionalidade adicional ao Spring Boot que é usada no nrich.
Contém classes utilitárias para acesso Spring, como ApplicationContextHolder
para resolução de ApplicationContext
a partir de contexto estático.
Contém restrições e validadores jakarta-validation-api
adicionais que provaram ser comumente usados, como o validador NotNullWhen
.
Fornece funcionalidade adicional construída sobre a estrutura Spring Web MVC. O objetivo principal é tratar exceções por meio de NotificationErrorHandlingRestControllerAdvice
que trata exceções registrando-as e, em seguida, criando e enviando notificações para o lado do cliente com a descrição da exceção. O módulo usa o módulo nrich-notification para manipulação de notificações e nrich-logging para registro. nrich-webmvc
também adiciona classes adicionais que lidam com vinculação (ou seja, transformando string vazia em nula) e resolução de localidade.