Releases: chinabugotech/hutool
Releases · chinabugotech/hutool
5.8.41
5.8.41(2025-10-12)
🐣新特性
- 【core 】 增加
WeakKeyValueConcurrentMap及其关联类,同时废弃WeakConcurrentMap并替换(issue#4039@Github) - 【core 】
MapUtil增加removeByValue和removeIf方法 - 【core 】
ObjectUtil增加apply方法 - 【core 】
ReferenceUtil增加get方法 - 【db 】
Condition增加构造方法支��BETWEEN(issue#4041@Github) - 【core 】
IoUtil.writeObjects判空避免空指针(issue#4049@Github) - 【extra 】
OsInfo增加isWindows11方法(pr#4054@Github) - 【extra 】
RedisDS增加getPool和getSetting方法(issue#ICVWDI@Gitee) - 【core 】
NumberUtil.pow增加重载,支持指数自定义保留位数(pr#4052@Github) - 【core 】
NumberUtil.isPrimes优化判断(pr#4058@Github) - 【extra 】
Mail.buildContent改进,正文部分总在最前(issue#4072@Github) - 【core 】
DataSizeUtil改进,兼容GiB等单位名称(issue#ICXXVF@Github) - 【ai 】
Message增加setter和构造方法(issue#ICXTP2@Gitee) - 【extra 】
PinyinUtil增加判空(pr#4081@Github) - 【core 】
LocalDateTimeUtil.parseDate注释修正(pr#4085@Github) - 【core 】
StrUtil增加null检查处理(pr#4086@Github) - 【json 】 增加Record支持(pr#4096@Github)
- 【crypto 】 增加
SpecUtil,KeyUtil增加generateRSAPrivateKey重载,(issue#ID1EIK@Gitee) - 【core 】
RandomUtil增加randomStringLower方法
🐞Bug修复
- 【core 】 修复
ReflectUtil中因class和Method关联导致的缓存无法回收问题(issue#4039@Github) - 【db 】 修复
Condition的Condition("discount_end_time", "!=", (String) null)方法生成SQL时,生成SQL不符合预期要求的错误(pr#4042@Github) - 【core 】 修复
IoUtil的closeIfPosible拼写错误,新建一个closeIfPossible方法,原方法标记deprecated(issue#4047@Github) - 【http 】 修复
HttpRequest.sendRedirectIfPossible未对308做判断问题。(issue#4053@Github) - 【cron 】 修复
CronPatternUtil.nextDateAfter当日为L时计算错误问题。(issue#4056@Github) - 【db 】 修复
NamedSql.replaceVar关键字处理问题(issue#4062@Github) - 【db 】 修复
DialectRunner.count方法中,去除包含多字段order by子句的SQL语句时错误问题(issue#4066@Github) - 【extra 】 修复
JschSessionPool并发问题(pr#4079@Github) - 【extra 】 修复
Sftp递归删除目录时使用相对路径可能导致死循环的问题(pr#1380@Gitee) - 【db 】 修复
SqlUtil.removeOuterOrderBy处理没有order by的语句导致异常问题(pr#4089@Github) - 【extra 】 修复
Sftp.upload目标路径为null时空指针问题(issue#ID14WX@Gitee) - 【ai 】 修复
AIConfigBuilder中方法名拼写错误(pr#1382@Gitee) - 【core 】 修复
StrBuildercharAt越界判断错误(pr#4094@Github) - 【dfa 】 修复
WordTree.addWord末尾为特殊字符导致的无法匹配问题(pr#4092@Github) - 【core 】 修复
ServiceLoaderUtil.loadFirstAvailable在JDK24+后未捕获异常导致的报错问题(pr#4098@Github) - 【cron 】 修复
CronTimer在任务非常多时,追赶系统时间导致遗漏任务的问题(issue#IB49EF@Gitee)
5.8.40
5.8.40(2025-08-26)
🐣新特性
- 【captcha】
MathGenerator四则运算方式支持不生成负数结果(pr#1363@Gitee) - 【core 】 增加
MapValueProvider和RecordConverter并支持Record转换(issue#3985@Github) - 【core 】
CalendarUtil增加isSameYear和calendar方法(issue#3995@Github) - 【core 】
DateUtil增加yyyy-MM-dd'T'HH:mmXXX格式支持(pr#1367@Gitee) - 【core 】
MapUtil增加flatten方法(pr#1368@Gitee) - 【extra 】
getClientIP优先获取传入的请求头信息(pr#1373@Gitee) - 【db 】 增加
Gbase8s驱动支持(issue#ICSFAM@Gitee) - 【db 】 增加TDSQL PostgreSQL版本、TDSQL-H LibraDB、Snowflake、Teradata 的驱动支持(pr#4024@Github)
- 【core 】
EnumUtil增加缓存支持(pr#1376@Gitee)
🐞Bug修复
- 【extra 】
Sftp``reconnectIfTimeout方法改为捕获所有异常(issue#3989@Github) - 【core 】 修复
ChineseDate闰年闰月节日获取问题(issue#ICL1BT@Gitee) - 【core 】 修复
TreeBuilderappend重复向idTreeMap中put问题(pr#3992@Github) - 【extra 】 修复
QLExpressEngineallowClassSet无效问题(issue#3994@Github) - 【core 】 修复
StrBuilderinsert插入计算错误问题(issue#ICTSRZ@Gitee) - 【cron 】 修复
CronPatternUtil.nextDateAfter计算下一个匹配表达式的日期时,计算错误问题(issue#4006@Github) - 【cache 】
ReentrantCache修改get逻辑key锁改为全局锁,保证安全(issue#4022@Github) - 【core 】 修复
NumberWordFormatterformatSimple输出错误问题(pr#4034@Github)
5.8.39
5.8.39(2025-06-20)
🐣新特性
- 【ai 】 增加SSE流式返回函数��数callback,增加超时时间配置,豆包、grok新增文生图接口,豆包生成视频支持使用model,新增HutoolAI平台
- 【core 】 DesensitizedUtil新增护照号码脱敏功能(pr#1347@Gitee)
- 【core 】 优化XXXToMapCopier的部分性能(pr#1345@Gitee)
- 【http 】
HttpConfig增加参数setIgnoreContentLength可选忽略读取响应contentLength头(issue#ICB1B8@Gitee) - 【core 】
Assert新增断言给定集合为空的方法以及单元测试用例(pr#3952@Github) - 【db 】 Db添加FetchSize的全局设置(pr#3978@Github)
- 【core 】 增加可召回批处理线程池执行器
RecyclableBatchThreadPoolExecutor(pr#1343@Gitee)
🐞Bug修复
- 【core 】 修复
NumberUtilisNumber方法以L结尾没有小数点判断问题(issue#3938@Github) - 【core 】 修复
CharsequenceUtiltoLowerCase方法拼写错误(issue#3941@Github) - 【core 】 修复
UUIDequals的问题,改为final类(issue#3948@Github) - 【core 】 修复
Money中金额分配的问题bug(issue#IC9Y35@Gitee) - 【poi 】 修复
ExcelPicUtil中可能的空指针异常 - 【core 】 修复
LunarFestival中重复节日问题(issue#ICC8X3@Gitee) - 【core 】 修复
ThreadUtil中中断异常处理丢失中断信息的问题,解决ConcurrencyTester资源未释放的问题(pr#1358@Gitee) - 【core 】 修复
TEL_400_800正则规则太窄问题(issue#3967@Github) - 【core 】 修复
ClassUtiisNormalClass判断未排除String问题(issue#3965@Github) - 【core 】 修复
ZipUtil中zlib和unZlib调用后资源未释放问题(issue#3976@Github) - 【core 】 修复
Money类的setAmount方法没有获取当前币种的小数位数而是使用的默认小数位和在遇到非2小数位的币种(如日元使用 0 位)会导致金额设置错误问题(pr#3970@Github) - 【cahce 】 修复
AbstractCacheputWithoutLock方法可能导致的外部资源泄露问题(pr#3958@Github)
5.8.38
5.8.38(2025-05-13)
🐣新特性
- 【core 】
PathUtil#del增加null检查(pr#1331@Gitee) - 【db 】 增加SAP HANA识别及方言(pr#3914@Github)
- 【crypto 】 增加
Argon2类,实现Argon2算法(issue#3890@Github) - 【core 】
CharSequenceUtil增加toLoweCase和toUpperCase方法(issue#IC0H2B@Gitee) - 【core 】 增加分段锁实现
SegmentLock(pr#1330@Gitee) - 【core 】 重载subtractToList方法,提供isLinked选项(pr#3923@Github)
- 【extra 】
TemplateConfig增加setUseCache方法(issue#IC3JRY@Gitee) - 【extra 】
AbstractFtp增加rename方法(issue#IC3PMI@Gitee) - 【core 】 优化
PropDesc缓存注解判断,提升性能(pr#1335@Gitee) - 【core 】 添加
RecordUtil支持record类(issue#3931@Github) - 【core 】
Dict的customKey方法访问权限修改为protected(pr#1340@Gitee) - 【ai 】 增加hutool-ai模块,对AI大模型的封装实现(pr#3937@Github)
🐞Bug修复
- 【setting】 修复
SettingautoLoad可能的加载为空的问题(issue#3919@Github) - 【db 】 修复某些数据库的getParameterMetaData会返回NULL,导致空指针的问题。(pr#3936@Github)
- 【extra 】 修正
SshjSftp在SftpSubsystem服务时报错问题(pr#1338@Gitee)
5.8.37
5.8.37(2025-03-31)
🐣新特性
- 【json 】 ObjectMapper删除重复trim(pr#3859@Github)
- 【core 】
FileWriter增加方法,可选是否追加换行符(issue#3858@Github) - 【core 】
IdcardUtil验证10位身份证兼容中英文括号(issue#IBP6T1@Gitee) - 【extra 】
PinyinUtil增加重载可选是否返回声调(pr#3875@Github) - 【http 】
HttpBase增加重载可选是否返回声调(pr#3883@Github) - 【core 】 增加
VersionUtil版本比较工具(pr#3876@Github) - 【db 】 增加GoldenDB识别(pr#3886@Github)
- 【http 】 改进
UrlQuery对无参URL增加判断识别(issue#IBRVE4@Gitee) - 【core 】 改进
PropDesc中去除Transient引用避免NoClassDefFoundError(issue#3901@Github) - 【core 】
StrUtil.isBlank增加\u200c判断(issue#3903@Github) - 【core 】 优化
CombinationAnnotationElement注解数组性能(pr#1323@Gitee) - 【core 】 完善季度相关 API(pr#1324@Gitee)
🐞Bug修复
- 【setting】 修复
SettingLoaderload未抛出异常导致配置文件无法正常遍历的问题(pr#3868@Github) - 【cache 】 修复
ReentrantCache#getOrRemoveExpired方法丢失onRemove触发问题(pr#1315@Gitee) - 【json 】 修复
JsonUtil.toBean泛型数组类型丢失问题(pr#3876@Github) - 【http 】 修复
HttpUtil.normalizeParams规则问题(issue#IBQIYQ@Gitee) - 【http 】 修复
NumberChineseFormatter.format中自定义单位在0时错误问题(issue#3888@Github)
What's Changed
- [bug修复] Update ObjectMapper.java 删除重复调用StrUtil.trim(source)代码 by @ghjdegithub in #3859
- PinyinUtil增加选择是否返回声调 by @elichow in #3872
- Revert "PinyinUtil增加选择是否返回声调" by @looly in #3874
- V5 dev by @elichow in #3875
- feat(hutool-http): 控制请求头是否聚合 by @zsdddz in #3883
- JsonUtil.toBean泛型数组类型丢失修复以及新增VersionUtil版本比较工具 by @winlans in #3876
- feat: 添加中兴数据库GoldenDB的url识别jdbc-driver逻辑 by @zchazc in #3886
New Contributors
- @ghjdegithub made their first contribution in #3859
- @zsdddz made their first contribution in #3883
- @zchazc made their first contribution in #3886
Full Changelog: 5.8.36...5.8.37
5.8.36
5.8.36(2025-02-18)
🐣新特性
- 【crypto 】 增加BCUtil.decodeECPrivateKey方法(issue#3829@Github)
- 【core 】 增加HtmlUtil.cleanEmptyTag方法(pr#3838@Github)
- 【db 】 GlobalDbSetting优化默认配置读取规则,优先读取文件而非jar中的文件(issue#900@Github)
- 【dfa 】 删除StopChar类中存在重复字符(pr#3841@Github)
- 【http 】 支持鸿蒙设备 UA 解析(pr#1301@Gitee)
🐞Bug修复
- 【aop 】 修复ProxyUtil可能的空指针问题(issue#IBF20Z@Gitee)
- 【core 】 修复XmlUtil转义调用方法错误问题,修复XmlEscape未转义单引号问题(pr#3837@Github)
- 【core 】 修复FileUtil.isAbsolutePath没有判断smb路径问题(pr#1299@Gitee)
- 【core 】 修复AbstractFilter没有检查参数长度问题(issue#3854@Github)
5.8.35
5.8.35(2024-12-25)
🐣新特性
- 【poi 】 优化ExcelWriter中使用比较器writer的方法,只对第一条数据进行排序(pr#3807@Github)
- 【extra 】 优化Ftp.download,返回false抛出异常(issue#3805@Github)
- 【core 】 优化MAC地址正则(issue#IB95X4@Gitee)
- 【json 】 JSON的getByPath方法新增更为通用的指定出参类型重载(pr#3814@Github)
- 【core 】 DateUtil.parseUTC方法标记废弃,改名为parseISO8601(issue#IBB6I5@Gitee)
- 【core 】 添加EnumUtil#getBy(Class, Func1, Object)方法(pr#1283@Gitee)
- 【db 】 添加Entity.addCondition方法(issue#IBCDL2@Gitee)
- 【poi 】 添加StopReadException,定义sax读取时用户可手动终止(issue#3820@Github)
🐞Bug修复
- 【crypto 】 修复JWTSignerUtil.createSigner中algorithmId未转换问题(issue#3806@Github)
- 【core 】 修复DateUtil.rangeContains未重置问题(issue#IB8OFS@Gitee)
- 【cache 】 修复StampedCache类get方法并发问题(issue#IBCIQG@Gitee)
- 【cache 】 修复FIFOCache类使用StampedCache导致并发读的并发问题(issue#IBCIQG@Gitee)
- 【cache 】 废弃StampedCache,可能造成Map循环调用导致死锁(issue#IBDGBZ@Gitee)
5.8.34
5.8.34(2024-11-25)
🐣新特性
- 【http 】 增加Windows微信浏览器识别(issue#IB3SJF@Gitee)
- 【core 】 ZipUtil.unzip增加编码容错(issue#I3UZ28@Gitee)
- 【core 】 Calculator兼容
x字符作为乘号(issue#3787@Github) - 【poi 】 Excel07SaxReader中,对于小数类型,增加精度判断(issue#IB0EJ9@Gitee)
- 【extra 】 SpringUtil增加getBean重载(issue#3779@Github)
- 【core 】 DataSizeUtil 新增format方法(issue#IB6UUX@Gitee)
🐞Bug修复
- 【core 】 修复DateUtil.rangeToList中step小于等于0时无限循环问题(issue#3783@Github)
- 【cron 】 修复cron模块依赖log模块问题
- 【extra 】 修复MailUtil发送html格式邮件无法正常展示图片问题(pr#1279@Gitee)
- 【core 】 【可能的向下兼容问题】修复双引号转义符转义错误问题,修改规则后,对非闭合双引号字段的策略变更,如"aa,则被识别为aa(issue#IB5UQ8@Gitee)
- 【extra 】 修复Sftp中传入Session重连时逻辑错误问题(issue#IB69U8@Gitee)
- 【json 】 修复JSONUtil.toBean()中将JSON数组字符串转Map对象返回错误问题(issue#3795@Github)
5.8.33
5.8.33(2024-11-05)
🐣新特性
- 【core 】 SyncFinisher增加setExecutorService方法(issue#IANKQ1@Gitee)
- 【http 】 HttpConfig增加
setUseDefaultContentTypeIfNull方法(issue#3719@Github) - 【core 】 用ArrayList重新实现权重随机类:WeightListRandom(pr#3720@Github)
- 【crypto 】 SM2解密时,兼容GmSSL非压缩省略的04头的密文(issue#IAP1QJ@Gitee)
- 【core 】 兼容NumberUtil.add方法传入整型自动类型转换为浮点类型的精度丢失问题(pr#3721@Github)
- 【core 】 ModifierUtil明确注释,并增加hasAllModifiers方法(issue#IAQ2U0@Gitee)
- 【http 】 HttpRequest增加setFixedContentLength方法(issue#3462@Github)
- 【db 】 AbstractDb增加getDs方法(issue#IARKZL@Gitee)
- 【db 】 QrCodeUtil添加二维码logo支持配置圆角(pr#3747@Github)
- 【core 】 TreeUtil.buildSingle指定rootId节点存在时,作为根节点(issue#IAUSHR@Gitee)
- 【core 】 EscapeUtil.escapeHtml4增加空处理(issue#IAZMYU@Gitee)
- 【core 】 PropDesc.isTransientForGet使用className,避免Android下类找不到问题(issue#IB0JP5@Gitee)
- 【core 】 优化NumberUtil.count(pr#3772@Github)
- 【crypto 】 SM2.signHex改名为signHexFromHex,原名标记废弃,避免歧义(issue#IB0NVY@Gitee)
- 【all 】 优化所调用的ObjectUtil#defaultIfNull避免重复创建(pr#1274@Gitee)
- 【core 】 NetUtil.bigIntegerToIPv6增加长度修正(issue#IB27HV@Gitee)
🐞Bug修复
- 【json 】 修复JSONConfig.setDateFormat设置后toBean无效问题(issue#3713@Github)
- 【core 】 修复RegexPool.CHINESE_NAME范围太大的问题(issue#IAOGDR@Gitee)
- 【http 】 修复重定向没有按照RFC7231规范跳转的问题,修改为除了307外重定向使用GET方式(issue#3722@Github)
- 【core 】 修复ArrayUtil.lastIndexOfSub死循环问题(issue#IAQ16E@Gitee)
- 【core 】 修复ImgUtil.write写出临时文件未清理问题(issue#IAPZG7@Gitee)
- 【json 】 修复ignoreNullValue在JSONArray中无效问题(issue#3759@Github)
5.8.32
5.8.32(2024-08-30)
🐣新特性
- 【core 】 FileUtil.getTotalLines()支持CR换行符(issue#IAMZYR@Gitee)
- 【json 】 GlobalSerializeMapping增加null检查(issue#IANH1Y@Gitee)
🐞Bug修复
- 【http 】 修复getFileNameFromDisposition不符合规范问题(issue#IAKBPD@Gitee)
- 【crypto 】 修复SymmetricCrypto.setParams和setRandom没有加锁问题(issue#IAJIY3@Gitee)
- 【crypto 】 修复ZipUtil压缩成流的方法检查文件时报错问题(issue#3697@Github)
- 【core 】 修复CopyOptions.setFieldValueEditor后生成null值setIgnoreNullValue无效问题(issue#3702@Github)
- 【json 】 修复JSONConfig.setDateFormat设置后setWriteLongAsString失效问题(issue#IALQ0N@Gitee)
- 【core 】 修复Tree.cloneTree的Parent节点引用错误问题(issue#IANJTC@Gitee)