yutool-commons公共模块
yutool-commons是yutool组件式框架的基础模块,为yutool的各个组件和插件提供注解、常量、枚举等公共类,同时也扩展了接口返回码、业务异常定义、参数检查过程封装等功能。
这里对公共模块中扩展的特色功能进行简单的说明。
接口返回码
| 类名 | 说明 | 核心属性及方法 |
|---|---|---|
| Result | 响应结果封装类 | • String code; 返回码 • String message; 提示信息,终端用户使用 • String info; 错误信息,开发者使用 • T data; 返回数据 • boolean success; 是否成功 • Result<T> ok(); 构造无数据的成功结果 • Result<T> ok(T data); 构造有数据的成功结果 • Result<T> fail(IResultCode resultCode); 根据响应枚举构造失败结果 • T checkAndGetRpcData(Result<T> result); 作为远程调用返回结果的接收类型时,需要校验调用成功之后,再获取返回数据 |
| IResultCode | 响应码和响应语义枚举接口 | • String getCode(); 获取响应码 • String getMessage(); 获取响应语义 |
| ErrorCode | 错误码枚举(参考《Java开发手册(黄山版)》附3:错误码列表,实现IResultCode) | |
| ResultCode | 响应码和响应语义枚举(实现IResultCode) |
业务异常定义
| 类名 | 说明 | 核心属性及方法 |
|---|---|---|
| BizException | 业务异常类(继承RuntimeException) | • String code; 错误码 • String message; 错误信息 • ExpObject expObject; 异常对象 • BizException of(String message); 根据错误信息构建 • BizException of(Throwable cause); 根据Throwable对象构建 • BizException of(String message, Throwable cause); 根据错误信息和Throwable对象构建 • BizException of(IResultCode resultCode); 根据IResultCode构建 • BizException of(IResultCode resultCode, Throwable cause); 根据IResultCode和Throwable对象构建 • BizException args(Object... args); 将message作为字符串模板,传入模板参数生成完整的message • BizException extraMsg(String extraMsg); 拼接到message后的额外信息 • BizException expObject(ExpObject expObject); 设置异常对象 |
| ExpObject | 异常对象,按需灵活使用 | • Object value; 业务异常相关内容 • ExpObject of(Object object); 异常对象构建方法 |
参数检查过程
| 类名 | 说明 | 核心属性及方法 |
|---|---|---|
| IChecker | 检查器接口 | • void check(CheckContext context); 有上下文参数的检查 • void check(); 无上下文参数的检查 |
| CheckContext | 上下文参数接口 | |
| CheckProcedure | 检查过程接口 | • void check(CheckContext context); 有上下文参数的全面检查 • void check(); 无上下文参数的全面检查 |
| ParamsChecker | 参数检查器(实现IChecker) | • boolean condition; 判断条件 • String message; 参数错误提示信息 • void check(); 执行参数检查 |
| ParamsCheckProcedure | 参数检查过程(实现CheckProcedure) | • ParamsCheckProcedure procedure(); 创建参数校验过程 • void check(); 执行参数全面检查 • ParamsCheckProcedure add(boolean condition, String message); 添加一个参数检查器 • ParamsCheckProcedure add(boolean condition, Supplier<String> messageSupplier); 添加一个参数检查器 • ParamsCheckProcedure add(BooleanSupplier conditionSupplier, String message); 添加一个参数检查器 • ParamsCheckProcedure add(BooleanSupplier conditionSupplier, Supplier<String> messageSupplier); 添加一个参数检查器 |
JSON序列化/反序列化
| 类名 | 说明 |
|---|---|
| JavaTimeModule | Java8时间默认序列化模块,适配jackson |
| LongParamModule | Long类型默认序列化模块,适配jackson |
| IdSerializer | 解决Long类型的主键转json传回前端丢失精度的问题,将Long转成String |
| SensitiveSerializer | 信息脱敏 |
| LongDeserializer | 将前端String类型的主键转成Long类型,搭配IdSerializer使用 |
| SqlInjectDeserializer | SQL注入过滤 |
| XssDeserializer | XSS过滤 |
特定场景编程范式
| 类名 | 说明 | 核心属性及方法 |
|---|---|---|
| BatchDataRefresher | 批量数据刷新器:将待更新的数据与已经持久化的数据按业务主键维度对比后执行批量新增、更新、删除操作 | • Map<K, T> persistedDataMap; 已经持久化的数据Map • Map<K, T> dataMap; 待更新的数据Map • Function<T, K> keyMapper; 数据主键转换器 • Consumer<Collection<T>> batchSaveHandler; 批量新增处理器 • Consumer<Collection<T>> batchUpdateHandler; 批量更新处理器 • Consumer<Collection<T>> batchDeleteHandler; 批量删除处理器 • Comparator<T> comparator; 新增数据排序比较器 • BatchDataRefresher<T, K> of(Function<T, K> keyMapper, Consumer<Collection<T>> batchSaveHandler, Consumer<Collection<T>> batchUpdateHandler, Consumer<Collection<T>> batchDeleteHandler); 构建批量数据刷新器 • BatchDataRefresher<T, K> of(Function<T, K> keyMapper, Consumer<Collection<T>> batchSaveHandler, Consumer<Collection<T>> batchUpdateHandler, Consumer<Collection<T>> batchDeleteHandler, Comparator<T> comparator); 构建批量数据刷新器 • void putPersistedData(Collection<T> collection); 放置持久化的数据集合 • void putPersistedData(T... data); 放置持久化的数据 • void putData(Collection<T> collection); 放置待更新数据集合 • void putData(T... data); 放置待更新数据 • void batchRefresh(BinaryOperator<T> updater); 批量刷新数据 |
| Evaluate | 求值器,可用于替换if-elseif-else赋值语句和switch-case-default赋值语句 | |
| MultiLevelValueSearcher | 多层级匹配取值器 | • List<Supplier<Q>> queries; 多层级匹配条件 • Function<Q, T> searcher; 取值器 • T defaultValue; 默认值 • MultiLevelValueSearcher<Q, T> of(List<Supplier<Q>> queries, Function<Q, T> searcher, T defaultValue); 构建多层级匹配取值器 • T matchAndGet(); 执行匹配并获取结果 • T matchAndGet(Predicate<T> predicate); 执行匹配并获取通过指定标准验收的结果 |
| RatioMap | 占比Map | • Map<K, BigDecimal> volumeMap; 数量分布Map • BigDecimal totalVolume = TOTAL_PERCENT; 总量(默认100) • RatioMap<K> create(Supplier<Map<K, BigDecimal>> supplier); 创建一个总量为100的数量分布Map • RatioMap<K> create(Supplier<Map<K, BigDecimal>> supplier, BigDecimal totalVolume); 创建一个指定总量的数量分布Map • Map<K, BigDecimal> getRatios(); 计算得到一个百分比分布Map • Map<K, BigDecimal> toMakeUpRatioMap(Integer scale); 将百分比差值补足到最大占比上,指定百分比数值保留几位小数 • Map<K, BigDecimal> toMakeUpRatioMapByProportion(Integer scale); 按原占比等比例补足百分比差值,指定百分比数值保留几位小数 |
| RecordableRateLimiter | 可记录的限流器 | • String name; 调用过程名称 • double initialRateLimit; 初始限流速率(每秒) • AtomicLong globalCallCount = new AtomicLong(); 全局总调用次数 • RateLimiter rateLimiter; 限流器 • AtomicLong lastTimeCallCount; 本次任务开始时记录的上次任务结束时总调用次数 • long recordRate = 10L; 记录间隔时间(秒) • AtomicLong previousCallCount; 上次记录时的调用次数 • void process(Runnable runnable); 开始执行任务 • R invoke(T params); 执行调用过程 • R call(T params); 实际调用过程 • void setRateLimit(double rateLimit); 设置限流速率 • void startRecord(); 开始记录 • void stopRecord(); 停止记录 • long getTaskCallCount(); 获取此次任务开始时截至当前时刻的总调用次数 |
| Switch | switch语句的lambda实现 |
评论区留言准则:
1. 本评论区禁止传播封建迷信、吸烟酗酒、低俗色情、赌博诈骗等任何违法违规内容。
2. 当他人以不正当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。
3. 请勿轻信各类招聘征婚、代练代抽、私下交易、购买礼包码、游戏币等广告信息,谨防网络诈骗。