# seaboot-commons **Repository Path**: seaboot/commons ## Basic Information - **Project Name**: seaboot-commons - **Description**: 核心工具包,包括:IO、Java反射、Java类型转换、简单队列等,是所有项目的基础依赖。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2018-06-14 - **Last Updated**: 2025-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## commons-utils 每个人的职业生涯,都会封装无数的工具类。 这就是那个属于我的工具包,跟 hu-tool、apache-commons 是同一类东西。 #### 目的 * 减少项目依赖,除了必要的第三方依赖,一般只需要这一个; * 提供基础的工具函数,八九成以上的代码,依赖当前工具包; * 形成二次封装,减少代码升级带来的影响; #### 使用说明 强依赖关系: * com.google.guava-23.0 基础工具 * dom4j-2.1.3 xml解析 * fastjson-2.0.40 json * beetl-3.16.1.RELEASE 模版引擎 * javax.servlet-3.0.1 servlet * org.springframework.core-5.1.14 spring工具 * org.jetbrains.annotations-20.0.0 idea代码规范 * reflect-asm-1.11.9 代码解析工具 * slf4j-api-2.0.9 日志 * zxing-core-3.3.0.jar 二维码 #### 代码调整 * 2019-05-04:项目转为 maven 工程; * 2019-09-06:日期格式化、数字格式化、随机数,更正后减少对象创建,并且多线程安全; * 2019-09-06:修改文件 IO 工具,InputStream 统一不关闭,需要程序员手动关闭,目的是为了减轻程序员的记忆负担, * 2019-09-06:HttpClient 版本升级至4(已经转移到 commons-net); * 2019-09-06:增加简单的数据库工具包,包名db(已转移到其它开源项目); * 2019-12-07:新增 EventBus 数据总线,与谷歌的相比,增加了一定的代码耦合; * 2019-12-07:Quartz 定时任务基本工具(已经转移到 seaboot-admin 中); * 2020-05-25:删除 pdf 工具,原因:实际业务需求过少; * 2020-05-25:EventBus 代码增加代码注释,删除无用的函数(不再推荐使用,业务代码越简单约好); * 2020-05-25:去除代码中的所有异常栈打印,异常以运行时异常的方式抛出; * 2020-05-25:去除 Handler,原因:维护成本过大,使用次数过少(调整代码后,又重新增加此依赖); * 2020-05-25:调整自定义异常的相关代码,BizException 用于前端页面数据返回(不记录日志); * 2020-05-28:删除 httpClient 代码,转移到 web 工程中,原因:个性化代码过多,使用时按实际业务场景配置; * 2020-05-15:Quartz 单独做一个Maven依赖,与 UploadFactory 一样,做成一个即插即用型的框架(2020-06-019 完成); * 2020-07-06:增加 TreeBuilder,用于组装树形结构(根据不同时期对代码的感觉,做适当调整); * 2020-07-20:增加 ResponseWriter,用于一些响应下载头的设置; * 2020-07-20:FieldAccess 兼容 Map、HashMap;增加 Calculator,用于数学精确计算; * 2020-08-10:增加分词器 Tokenizer,性能更高的、更易于使用的 String.format(); * 2020-09-25:BufferedImageUtil 增加 createFontIcon 函数,用于生成文字图标; * 2020-10-28:拆分 java.sql 日期和 java.time 日期工具类; * 2020-11-20:反射工具类,增加获取泛型的方法; * 2020-11-26:调整 Converter,与 spring 共享类型转换工具; * 2021-02-21:FieldAccess 变得更加实用,并且符合设计规范,今后作为Java反射基础工具; * 2021-08-16:大幅度简化 Handler 的代码,使之更易于使用,逻辑也更加简单(主要作为纪念); * 2021-11-29:将 spring-core 作为项目依赖,如果 spring 已经存在工具接口规范,则直接使用 spring 规范,例如:Converter ( 类型转换工具); * 2022-01-24:所有的工具类,使用相同的时区/国际化,一次配置,全局有效,通过设置 cn.seaboot.common.bean.P 进行配置; * 2022-04-02:增加多线程工具,SingletonLock,基于信号量的一个工具 * 2023-09-13:fastjson升级到最新版 * 2024-08-08:将 beetl 作为默认的模版引擎,会有很多不兼容的场景, 但是语法的十分便于理解,在需要用户自定义模版的情况,客户体验会好一些。 * 2025-04-08:移除 freemarker,将所有依赖升级到最新 * 2025-04-08:取消大量的非空判断,减少二次检测,要求在业务中,程序员养成习惯,重视代码中的空值检测。 * 2025-05-21:增加 WorkTask 工具类(MQ),经典的 “生产者-消费者” 模式。 #### 参与贡献 1. Mr.css