👋 Hi,朋友们!GoFrame框架v2.2.0版本在今天发布啦!
本次版本的最大的看点在于:
- 重构并改进了开发者最频繁使用的校验组件,使得社区的开发者可以很方便地开发和维护内置校验规则。并且扩增了一些常用校验规则,使得组件内置规则更加丰富强大。
- 改建了数据库组件接口设计,使得社区开发者可以更简单地新增一个数据库类型的
driver,目前框架通过社区组件的方式提供了9种数据库类型的driver实现,满足绝大部分业务项目的需求。尤其是本次版本新增了对国产达梦数据库的支持,未来我们期望社区的开发者能提供更多国产数据库类型的driver实现,贡献给开源社区。 - 社区组件的丰富,本次主要新增了
3种类型的配置中心接口实现,支持Apollo/Polaris/Kubernetes ConfigMap。GoFrame框架采用了模块化低耦设计,组件分为框架主库与社区组件。框架主库提供核心通用轻量的基础组件,而社区组件是与框架主库解耦的单独组件包,保证主库通用轻量的同时为框架扩充了更多的能力。 - 本次版本的代码贡献者超过
44位,框架的贡献者达到了107位。感谢大家为社区付出的努力和贡献!💖
Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.2.0
新特性
- 重构校验组件的内置校验规则管理器,增加并支持到了
59种常用内置校验规则:数据校验-校验规则 - 新增社区组件
contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm - 新增社区组件
contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo - 新增社区组件
contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris - 新增
contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers
主要改进
社区组件
ORM驱动实现
- 改进
contrib/drivers/pgsql在ORM组件层面支持更多pgsql内置的数据类型。 - 改进
contrib/drivers/pgsql支持写入操作下的LastInsertId特性。 - 改进
contrib/drivers/clickhouse支持decimal.Decimal数据类型。 - 新增
contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers
注册发现组件
- 改进
contrib/registry/etcd实现,将日志对象改为接口属性,允许外部注册自定义的日志对象。
配置组件
- 新增社区组件
contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm - 新增社区组件
contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo - 新增社区组件
contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris
数据库ORM
- 统一不同数据库类型下,单行字符串配置管理格式,并兼容支持已有不同数据库类型特定的配置格式:ORM使用配置
- 改进接口设计,简化
driver实现逻辑,后续新增更多的数据库driver支持更加简便。 - 新增
ToSQL方法,用于将ORM操作生成可供调试的SQL语句,并不真正执行SQL。 - 新增
CatchSQL方法,用于通过闭包方法获取内部执行的SQL语句列表。 - 废弃
Core对象中的GetStruct/GetStructs方法,统一使用Scan方法操作,以提高易用性。 - 数据库对象使用日志对象改为接口属性,允许外部注册自定义的日志对象。
- 新增
Extra及Protocol配置,用于设置额外的配置参数以及链接协议,默认通过Link配置自动解析。 - 去掉
Filtered接口,采用默认实现,简化复杂度、提高易用性。 - 新增
ConvertValueForLocal及CheckLocalTypeForField接口,用于自定义的数据类型转换及数据类型获取,并提供默认实现。 - 新增
ClearTableFields方法,用于清理特定数据表的数据结构缓存:ORM高级特性-字段映射 - 新增
ClearTableFieldsAll方法,用于清理当前数据库对象所有的数据表数据结构缓存:ORM高级特性-字段映射 - 新增
ClearCache方法,用于清理特定数据表的所有查询缓存:ORM链式操作-查询缓存 - 新增
ClearCacheAll方法,用于清理当前数据库对象所有的查询缓存:ORM链式操作-查询缓存 - 其他一些改进。
编解码组件
gcompress- 新增
GzipPathWriter方法没用与将特定路径下的文件压缩到指定的io.Writer中。 - 新增ZipPathContent方法,用于使用
zip算法打包压缩文件/目录并返回字节内容。
- 新增
gjson- 将
ContentTypeJson等字符串参数调整为ContentType类型
- 将
错误处理
- 增加命令行参数
--gf.gerror.brief及GF_GERROR_BRIEF环境变量开关,控制是否在错误堆栈打印时过滤框架堆栈:错误处理-其他特性 - 其他一些细节改进。
网络组件
ghttp- 新增常用中间件
MiddlewareJsonBody用于校验请求Body是否JSON格式。 - 新增
GetListenedAddress方法,用于获取HTTP Server在指定:0监听端口时系统随机分配的监听地址。 - 当服务端执行出错时,修改返回HTTP状态码为
500。
- 新增常用中间件
gtcp- 新增
GetListenedAddress/GetListenedPort方法,用于获取TCP Server在指定:0监听端口时系统随机分配的监听地址/端口。
- 新增
gudp- 新增
GetListenedAddress/GetListenedPort方法,用于获取UDP Server在指定:0监听端口时系统随机分配的监听地址/端口。
- 新增
goai- 生成接口文档时,支持内嵌结构体定义的属性。
- 去掉接口文档中重复的参数说明,特别是在
URL和Body中存在相同参数时。
gtrace- 改进
WithTraceID方法的错误提示为更明确的信息。 - 新增
WithUUID方法,用于将标准的UUID转换为OpenTelemetry的TraceID。
- 改进
系统组件
gcfg- 调整
Available接口方法定义,将resource参数改为非必须参数。
- 调整
gcron- 针对定时任务延迟的场景,增加时间差异计算逻辑,尽可能减少对定时任务的影响。
gctx- 新增跨进程的链路跟踪支持。
- 新增
GetInitCtx/SetInitCtx方法,用于main包及包init包初始化方法执行时的context获取和设置。
glog- 新增
ILogger接口定义,用于跨组件使用日志组件时的接口化解耦。 - 其他细节改进。
- 新增
gres- 资源
File对象新增Export方法,用于将该对象关联的资源导出到指定的磁盘路径。
- 资源
gstructs- 将
RecursiveOption从int类型改进为自定义类型,并调整对应的方法参数定义。
- 将
文本处理
- 新增
gstr.IsGNUVersion方法,用于判断给定的字符串是否满足GNU版本规则。
工具方法
gconv- 改进对
NaN特殊字符串的int64/uint64转换支持。
- 改进对
gutil- 新增
GetOrDefaultStr/GetOrDefaultAny方法,用于默认值和非必须参数的便捷处理。
- 新增
gvalid- 重构内置校验规则管理器,使得新增一个内置校验非常简便。
- 增加并支持到了
59种常用内置校验规则:数据校验-校验规则
功能修复
- 修复
garray/gmap/gset/glist/gtype/gvar在容器对象为nil场景下DeepCopy的panic问题。 - 修复
gtime在对象为nil场景下DeepCopy的panic问题。 - 修复数据库ORM链式操作
Group方法在给定多个排序条件时的覆盖问题。 - 修复
HTTP Server在JSON格式字符串返回时的内容重复输出问题。 - 修复
gstr.Nl2Br方法在部分场景下由于逻辑判断引起的数组访问越界问题。 - 修复查询数据表字段信息时表名为空场景的错误打印问题。
- 修复
Req对象属性为*gjson.Json类型的参数接收问题。
开发工具
- 改进
gen dao命令,增加clear参数,用于自动清理目标数据库中不存在的本地数据模型Go文件:数据规范-gen dao - 改进
gen service命令:接口维护-gen service- 按照业务模块对结构体对象生成的接口进行整合。
- 增加
clear参数,用于自动清理在logic没有对应的接口代码及文件。 - 其他一些细节改进。
- 改进
run命令,增加自定义的程序运行参数。




还没有评论,来说两句吧...