# subgrade
**Repository Path**: dwarfeng/subgrade
## Basic Information
- **Project Name**: subgrade
- **Description**: A develop kit for personal project.
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2020-01-23
- **Last Updated**: 2025-05-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Subgrade
此项目是作者的个人工具库,包含多种能大幅提高发开速度的通用工具库。
---
## 特性
- 包含项目开发时所需的几乎所有接口,您可以直接实现这些接口,节省您定义接口的时间。
- 针对实体对象进行大量的工具开发,如实体映射工具、实体的数据访问层、实体的缓存等工具。
- 定义了统一的异常处理机制,使得Service服务或其它方法能够输出统一的异常,方便下序进行进一步处理。
- 实现了常用的AOP,如性能分析、登录判断、权限判断、友好性增强。
- 实现了多种中间件的序列化器,如Redis的序列化器、Kafka的序列化器,可供这些框架直接使用。
- 实现了Web后端的常用工具,如分页、对象封装等常用方法。
- 方便地与 `SpringFramework` 集成。
## 在实践中被证实的优秀体验
该工具被应用在几十个微服务应用、数十个 webapi 项目、数个 CS 架构项目中。均在不同程序上提高了程序的开发效率与调试效率。
- 轻松地完成带有二级缓存的实体的维护接口,实现实体的增删改查功能。
- 性能分析注解对程序调试、调优的极为便利的支持。
- 异常映射机制,快捷地将异常类映射为代码,向 web 前端传值时更为方便。
- 轻松地完成接口的权限控制,登录控制,友好性增强。
## 文档
该项目的文档位于 [docs](./docs) 目录下,包括:
### wiki
wiki 为项目的开发人员为本项目编写的详细文档,包含不同语言的版本,主要入口为:
1. [简介](./docs/wiki/zh_CN/Introduction.md) - 镜像的 `README.md`,与本文件内容基本相同。
2. [目录](./docs/wiki/zh_CN/Contents.md) - 文档目录。
## 包含的工具
- 通用项目接口定义。
- 服务接口 `Service`
- 数据访问层接口 `Dao`
- 缓存接口 `Cache`
- 处理接口 `Handler`
- Bean接口 `Bean`
- 实体接口 `Entity`
- 主键接口 `Key`
- 数据传输对象接口 `Dto`
上述接口的定义使得一般的新项目完全无需再定义任何新接口。
- 异常处理工具。
- 通用服务异常 `ServiceException`
- 通用异常处理机制 `ServiceExceptionMapper`
通用异常处理机制能将方法执行过程中的任何异常映射到 `ServiceException` 中, `ServiceException` 异常作为异常中间件,
可方便地转换为 `ResponseData` 或方便的通过 RPC 进行传输。
- 通用数据访问层接口定义以及实现。
- 通用缓存接口定义以及实现。
- Redis, Kafka 的序列化器以及反序列化器。
- 通用服务的接口定义以及实现。
- AOP增强。
## 安装说明
1. 下载源码。
使用 git 进行源码下载。
```shell
git clone git@github.com:DwArFeng/supgrade.git
```
对于中国用户,可以使用 gitee 进行高速下载。
```shell
git clone git@gitee.com:dwarfeng/supgrade.git
```
2. 项目安装。
进入项目根目录,执行maven命令
```
mvn clean source:jar install
```
3. 项目部署。
该项目使用了 `2.8.2` 版本的 `maven-deploy-plugin`,如果您有属于自己的 maven 依赖仓库,
可以在妥善配置 maven 的 `setting.xml` 之后,进入项目根目录,运行 maven 部署指令。
```
mvn clean source:jar deploy
```
4. enjoy it.
## 项目使用
### 注意
该项目开发时使用的部分第三方依赖已经停止维护。因此相关的实现均不推荐使用。
开发人员在引用该项目的坐标时推荐主动排除这些第三方依赖。
相关的依赖列表:
| groupId | artifactId | 相关说明 |
|:-------------|:-------------|:-----------------------------------------------|
| net.sf.dozer | dozer | [github](https://github.com/DozerMapper/dozer) |
| net.sf.dozer | dozer-spring | [github](https://github.com/DozerMapper/dozer) |
### maven
#### subgrade-stack
```xml
com.dwarfeng
subgrade-stack
${subgrade.version}
```
#### subgrade-sdk
```xml
com.dwarfeng
subgrade-sdk
${subgrade.version}
dozer
net.sf.dozer
dozer-spring
net.sf.dozer
```
#### subgrade-impl
```xml
com.dwarfeng
subgrade-impl
${subgrade.version}
dozer
net.sf.dozer
dozer-spring
net.sf.dozer
```
## 推荐使用版本
- 对于任何的新项目,推荐使用不低于 `1.5.7.a` 的版本。
- 对于使用 `WriteService` 或 `BatchWriteService` 的项目,请勿使用 `1.5.4.a` `1.5.5.a` 版本。
- 对于任何项目,请勿使用 `1.4.8.a` 的版本,此版本核心类存在严重 bug。
- 低于 `1.2.13.a` 的版本,内存数据访问层分页查询逻辑存在问题,如使用内存数据访问层,则需要将版本升级至 `1.2.13.a` 以上。
- 低于 `1.2.7.a` 的版本,部分关键依赖有严重等级的 bug,使用可能会造成安全问题。
- 低于 `1.2.3.b` 的版本包含以下已经发现的 bug,如果项目使用到了下述模块,则需要将 subgrade 版本升级至 `1.2.3.b`。
- `RedisBatchBaseDao` 执行 `batchDelete` 存在执行不成功或行为异常的 bug。
- 低于 `1.1.8.a` 的版本包含以下已经发现的 bug,如果项目使用到了下述模块,则需要将 subgrade 版本升级至 `1.1.8.a`。
- `com.dwarfeng.subgrade.stack.service.CrudService.get` 部分实现当实体不存在时抛出意料之外的异常的 bug。
- 对于任何使用 subgrade 旧版本的项目,请酌情将 subgrade 版本升级至不低于 `1.2.3.b`。
- 所有项目勿使用 `1.1.0.a` 的版本,此版本存在严重的兼容性问题。