croz-ltd/nrich
GitHub: croz-ltd/nrich
一个基于 Spring Framework 的 Java 企业级开发通用工具库,将多种常用功能模块整合为开箱即用的 Spring Boot starter 以简化 JVM 应用开发。
Stars: 52 | Forks: 6
[](https://github.com/croz-ltd/nrich/actions/workflows/build.yml)
[](https://codecov.io/gh/croz-ltd/nrich)
[](https://github.com/croz-ltd/nrich/blob/master/LICENSE)
[](https://search.maven.org/search?q=net.croz.nrich)
[](https://croz-ltd.github.io/nrich)
# nrich
Nrich 是一个由 CROZ 开发的 Java 库,旨在让 JVM 上的应用程序开发变得更轻松。
它是通过将在多个项目中被证明非常有用的模块组合到一个公共库中而创建的。
该库基于 Spring Framework,并因此为大多数模块提供了 Spring Boot starter,以使配置更加容易。
大多数功能组由多个模块组成:
- api - 具有 `api` 后缀,包含代表模块 API 的类(服务接口、参数、返回类型等)
- implementation - 包含实际的 API 实现
- spring boot starter - 具有 `spring-boot-starter` 后缀,包含指定模块的 Spring Boot 自动配置
在 Spring Boot 环境中,只应将 Spring Boot starter 模块作为依赖项添加。
## 兼容性
下表包含了 nrich 版本及其对应的最低 Java 和 Spring 版本。
| Nrich 版本 | Java 版本 | Spring Boot 版本 |
|---------------|--------------|---------------------|
| 1.0.x - 1.1.x | 1.8 | 2.3.3.RELEASE |
| 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 |
| 2.10.x | 17 | 3.4.5 |
## 模块
Nrich 由以下模块组成:
### [nrich-bom](nrich-bom/README.md)
为所有 nrich 模块以及这些模块内部使用的、未被 Spring Boot 依赖项覆盖的库提供受管理的依赖项。
### [nrich-core-api](nrich-core-api/README.md)
此模块包含整个库中使用的公共类。
### [nrich-encrypt](nrich-encrypt/README.md)
该模块通过能够加密方法结果和解密方法参数来实现更简单的加密和解密。
需要加密结果和/或解密参数的方法可以使用注解进行标记,或者作为在
属性文件(例如 `application.yml`)中指定的属性进行标记。
### [nrich-excel](nrich-excel/README.md)
提供从提供的数据和模板更轻松地生成 Excel 报告的功能。
默认实现使用 `Apache POI` 库,但尝试简化其使用方式。
### [nrich-form-configuration](nrich-form-configuration/README.md)
提供服务端类约束到客户端表单约束的映射。
`nrich-form-configuration` 的目的是为约束定义提供一个中心位置。
客户端将表单注册到定义约束的类,这使其能够请求已注册表单的信息。
提供的信息包含类中指定的约束及其错误消息。
然后,客户端负责处理这些约束并将它们应用到表单上。
### [nrich-jackson](nrich-jackson/README.md)
为标准 Jackson 属性设置常用的默认值(例如 `FAIL_ON_EMPTY_BEANS: false`),以避免在项目中重复配置。
该模块还提供了 Jackson 模块,用于将空字符串序列化为 null,以及对于
带有 `@Entity` 注解或属于给定列表中定义的包的类,将类名序列化为完全限定的类名。
### [nrich-logging](nrich-logging/README.md)
提供一个日志服务,用于以标准格式记录一致的错误日志。
提供的日志服务还可以解析每个异常的详细程度和日志级别。
此模块在 [nrich-webmvc](nrich-webmvc/README.md) 模块中用于异常日志记录,但可以轻松替换为其他自定义实现。
### [nrich-notification](nrich-notification/README.md)
旨在将指定的通知添加到服务端响应中,这些通知稍后可以在客户端上显示。
`nrich-notification` 支持三种不同的通知严重性级别,并且还可以包含验证错误列表。
消息的定义和解析是通过 Spring 的 `MessageSource` 功能实现的。
### [nrich-registry](nrich-registry/README.md)
简化指定 JPA 实体的管理,并提供客户端可以解释并用于创建动态表单和网格的格式化表示。
生成的表单和网格可用于实体编辑,而无需在服务端进行额外实现。
该模块还提供了通过 REST API 搜索、创建、更新和删除实体的方法。
### [nrich-search](nrich-search/README.md)
简化实体的查询。
`nrich-search` 基于 Spring Data JPA 库构建,其创建旨在简化客户端各种搜索表单的查询创建。
查询可以根据不同类型的输入自动形成,例如查询类或带有搜索字段列表的字符串。
此外,特殊的配置类用于定义提供的查询值如何在查询创建中使用。
### [nrich-security-csrf](nrich-security-csrf/README.md)
旨在替代 Spring Security 的 csrf 功能。
`nrich-security-csrf` 同时支持 Spring Web MVC 和 WebFlux 库。
客户端应定义初始 token url,然后在此后的每个请求中通过 header 或参数发送生成的 token。
### [nrich-spring-boot](nrich-spring-boot/README.md)
为 nrich 中使用的 Spring Boot 添加额外的功能。
### [nrich-spring](nrich-spring/README.md)
包含用于 Spring 访问的实用工具类,例如用于从静态上下文解析 `ApplicationContext` 的 `ApplicationContextHolder`。
### [nrich-validation](nrich-validation/README.md)
包含被证明是常用的额外 `jakarta-validation-api` 约束和验证器,例如 `NotNullWhen` 验证器。
### [nrich-webmvc](nrich-webmvc/README.md)
提供基于 Spring Web MVC 框架构建的额外功能。
主要目的是通过 `NotificationErrorHandlingRestControllerAdvice` 处理异常,该类通过记录异常来处理它们,
然后创建通知并将其与异常描述一起发送到客户端。
该模块使用 [nrich-notification](nrich-notification/README.md) 模块进行通知处理,并使用 [nrich-logging](nrich-logging/README.md) 进行日志记录。
`nrich-webmvc` 还添加了用于处理绑定(即将空字符串转换为 null)和解析区域设置的额外类。
标签:JS文件枚举, JVM, Spring Boot, Spring框架, 后端开发, 开发组件库