Nrich 是 CROZ 开发的一个 Java 库,其目的是使 JVM 上的应用程序开发变得更加容易。它是通过将在多个项目中有用的模块组合到一个公共库中而创建的。该库基于 Spring 框架,因此为大多数模块提供了 Spring Boot 启动器,以使配置更容易。
大多数功能组由多个模块组成:
api
后缀并包含表示模块 API 的类(服务接口、参数、返回类型...)spring-boot-starter
后缀,包含指定模块的 Spring Boot 自动配置在 Spring Boot 环境中,仅应将 Spring Boot Starter 模块添加为依赖项。
下表包含 nrich 版本以及相应的最低 Java 和 Spring 版本。
尼克尔版本 | Java版本 | 春季启动版本 |
---|---|---|
1.0.x - 1.1.x | 1.8 | 2.3.3.发布 |
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由以下模块组成:
为所有 nrich 模块以及 Spring Boot 依赖项未涵盖的这些模块内使用的库提供托管依赖项。
该模块包含整个库中使用的通用类。
该模块通过能够加密方法结果和解密方法参数来实现更轻松的加密和解密。可以使用注释或属性文件(例如application.yml
)中指定的属性来标记结果应加密和/或参数解密的方法。
可以根据提供的数据和模板更轻松地生成 Excel 报告。默认实现使用Apache POI
库,但尝试简化使用。
提供服务器端类约束到客户端表单约束的映射。 nrich-form-configuration
的目的是为约束定义提供一个中心位置。客户端将表单注册到定义约束的类,这使他能够请求已注册表单的信息。提供的信息包含约束及其错误消息,这些错误消息在类中指定。然后,客户负责处理它们并将其应用到表单中。
设置标准 Jackson 属性的常用默认值(例如FAIL_ON_EMPTY_BEANS: false
)以避免项目中的重复。该模块还提供 Jackson 模块,用于将空字符串序列化为 null,并将类名序列化为使用@Entity
注释进行注释的类的完全限定类名或来自给定列表中定义的包的类。
提供日志服务,以标准格式进行一致的错误日志记录。提供的日志记录服务还可以解析每个异常的详细程度和日志记录级别。该模块在 nrich-webmvc 模块中用于异常日志记录,但可以轻松地替换为其他一些自定义实现。
旨在将指定的通知添加到服务器端响应中,稍后可以在客户端上显示。 nrich-notification
支持三种不同的通知严重性级别,还可以包含验证错误列表。消息的定义和解析是通过Spring的MessageSource
特性实现的。
简化指定 JPA 实体的管理,并提供客户端可以解释和创建动态表单和网格的格式化表示。生成的表单和网格可用于实体编辑,无需在服务器端进行额外的实现。该模块还提供通过 REST API 搜索、创建、更新和删除实体的方法。
简化实体的查询。 nrich-search
基于 Spring Data JPA 库,是为了简化客户端各种搜索表单的查询创建而创建的。查询可以根据不同类型的输入自动形成,例如查询类或带有搜索字段列表的字符串。此外,特殊的配置类用于定义在查询创建中如何使用提供的查询值。
旨在替代 Spring Security csrf 功能。 nrich-security-csrf
可与 Spring Web MVC 和 WebFlux 库配合使用。客户端应定义初始令牌 url,然后将生成的令牌与标头中的每个请求一起发送或作为参数发送。
向 Spring Boot 添加在 nrich 中使用的附加功能。
包含用于 Spring 访问的实用程序类,例如用于从静态上下文解析ApplicationContext
ApplicationContextHolder
。
包含额外的jakarta-validation-api
约束和被证明常用的验证器,例如NotNullWhen
验证器。
提供构建在 Spring Web MVC 框架之上的附加功能。主要目的是通过NotificationErrorHandlingRestControllerAdvice
来处理异常,该通知通过记录异常来处理异常,然后创建通知并将其发送到客户端以及异常的描述。该模块使用 nrich-notification 模块进行通知处理,使用 nrich-logging 进行日志记录。 nrich-webmvc
还添加了处理绑定(即将空字符串转换为 null)和区域设置解析的附加类。