GoFrame v2.2.0 发布,企业级 Golang 开发框架

2022-10-10 21:10:13 +08:00
 johng

👋 Hi ,朋友们!GoFrame框架v2.2.0版本在今天发布啦!

本次版本的最大的看点在于:

Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.2.0

新特性

  1. 重构校验组件的内置校验规则管理器,增加并支持到了59种常用内置校验规则:数据校验-校验规则
  2. 新增社区组件contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm
  3. 新增社区组件contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo
  4. 新增社区组件contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris
  5. 新增contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers

主要改进

社区组件

ORM 驱动实现

  1. 改进contrib/drivers/pgsql在 ORM 组件层面支持更多pgsql内置的数据类型。
  2. 改进contrib/drivers/pgsql支持写入操作下的LastInsertId特性。
  3. 改进contrib/drivers/clickhouse支持decimal.Decimal数据类型。
  4. 新增contrib/drivers/dm国产达梦数据库支持:https://github.com/gogf/gf/tree/master/contrib/drivers

注册发现组件

  1. 改进contrib/registry/etcd实现,将日志对象改为接口属性,允许外部注册自定义的日志对象。

配置组件

  1. 新增社区组件contrib/config/kubecm,实现基于kubernetes configmap的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/kubecm
  2. 新增社区组件contrib/config/apollo,实现基于apollo配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/apollo
  3. 新增社区组件contrib/config/polaris,实现基于polaris配置中心的配置组件Adapter实现:https://github.com/gogf/gf/tree/master/contrib/config/polaris

数据库 ORM

  1. 统一不同数据库类型下,单行字符串配置管理格式,并兼容支持已有不同数据库类型特定的配置格式:ORM 使用配置
  2. 改进接口设计,简化driver实现逻辑,后续新增更多的数据库driver支持更加简便。
  3. 新增ToSQL方法,用于将 ORM 操作生成可供调试的SQL语句,并不真正执行SQL
  4. 新增CatchSQL方法,用于通过闭包方法获取内部执行的SQL语句列表。
  5. 废弃Core对象中的GetStruct/GetStructs方法,统一使用Scan方法操作,以提高易用性。
  6. 数据库对象使用日志对象改为接口属性,允许外部注册自定义的日志对象。
  7. 新增ExtraProtocol配置,用于设置额外的配置参数以及链接协议,默认通过Link配置自动解析。
  8. 去掉Filtered接口,采用默认实现,简化复杂度、提高易用性。
  9. 新增ConvertValueForLocalCheckLocalTypeForField接口,用于自定义的数据类型转换及数据类型获取,并提供默认实现。
  10. 新增ClearTableFields方法,用于清理特定数据表的数据结构缓存:ORM 高级特性-字段映射
  11. 新增ClearTableFieldsAll方法,用于清理当前数据库对象所有的数据表数据结构缓存:ORM 高级特性-字段映射
  12. 新增ClearCache方法,用于清理特定数据表的所有查询缓存:ORM 链式操作-查询缓存
  13. 新增ClearCacheAll方法,用于清理当前数据库对象所有的查询缓存:ORM 链式操作-查询缓存
  14. 其他一些改进。

编解码组件

  1. gcompress
    1. 新增GzipPathWriter方法没用与将特定路径下的文件压缩到指定的io.Writer中。
    2. 新增 ZipPathContent 方法,用于使用zip算法打包压缩文件 /目录并返回字节内容。
  2. gjson
    1. ContentTypeJson等字符串参数调整为ContentType类型

错误处理

  1. 增加命令行参数--gf.gerror.briefGF_GERROR_BRIEF环境变量开关,控制是否在错误堆栈打印时过滤框架堆栈:错误处理-其他特性
  2. 其他一些细节改进。

网络组件

  1. ghttp
    1. 新增常用中间件MiddlewareJsonBody用于校验请求Body是否JSON格式。
    2. 新增GetListenedAddress方法,用于获取HTTP Server在指定:0监听端口时系统随机分配的监听地址。
    3. 当服务端执行出错时,修改返回 HTTP 状态码为500
  2. gtcp
    1. 新增GetListenedAddress/GetListenedPort方法,用于获取TCP Server在指定:0监听端口时系统随机分配的监听地址 /端口。
  3. gudp
    1. 新增GetListenedAddress/GetListenedPort方法,用于获取UDP Server在指定:0监听端口时系统随机分配的监听地址 /端口。
  4. goai
    1. 生成接口文档时,支持内嵌结构体定义的属性。
    2. 去掉接口文档中重复的参数说明,特别是在URLBody中存在相同参数时。
  5. gtrace
    1. 改进WithTraceID方法的错误提示为更明确的信息。
    2. 新增WithUUID方法,用于将标准的UUID转换为OpenTelemetryTraceID

系统组件

  1. gcfg
    1. 调整Available接口方法定义,将resource参数改为非必须参数。
  2. gcron
    1. 针对定时任务延迟的场景,增加时间差异计算逻辑,尽可能减少对定时任务的影响。
  3. gctx
    1. 新增跨进程的链路跟踪支持。
    2. 新增GetInitCtx/SetInitCtx方法,用于main包及包init包初始化方法执行时的context获取和设置。
  4. glog
    1. 新增ILogger接口定义,用于跨组件使用日志组件时的接口化解耦。
    2. 其他细节改进。
  5. gres
    1. 资源File对象新增Export方法,用于将该对象关联的资源导出到指定的磁盘路径。
  6. gstructs
    1. RecursiveOptionint类型改进为自定义类型,并调整对应的方法参数定义。

文本处理

  1. 新增gstr.IsGNUVersion方法,用于判断给定的字符串是否满足GNU版本规则。

工具方法

  1. gconv
    1. 改进对NaN特殊字符串的int64/uint64转换支持。
  2. gutil
    1. 新增GetOrDefaultStr/GetOrDefaultAny方法,用于默认值和非必须参数的便捷处理。
  3. gvalid
    1. 重构内置校验规则管理器,使得新增一个内置校验非常简便。
    2. 增加并支持到了59种常用内置校验规则:数据校验-校验规则

功能修复

  1. 修复garray/gmap/gset/glist/gtype/gvar在容器对象为nil场景下DeepCopypanic问题。
  2. 修复gtime在对象为nil场景下DeepCopypanic问题。
  3. 修复数据库 ORM 链式操作Group方法在给定多个排序条件时的覆盖问题。
  4. 修复HTTP ServerJSON格式字符串返回时的内容重复输出问题。
  5. 修复gstr.Nl2Br方法在部分场景下由于逻辑判断引起的数组访问越界问题。
  6. 修复查询数据表字段信息时表名为空场景的错误打印问题。
  7. 修复Req对象属性为*gjson.Json类型的参数接收问题。

开发工具

  1. 改进gen dao命令,增加clear参数,用于自动清理目标数据库中不存在的本地数据模型 Go 文件:数据规范-gen dao
  2. 改进gen service命令:接口维护-gen service
    1. 按照业务模块对结构体对象生成的接口进行整合。
    2. 增加clear参数,用于自动清理在logic没有对应的接口代码及文件。
    3. 其他一些细节改进。
  3. 改进run命令,增加自定义的程序运行参数。
3232 次点击
所在节点    Go 编程语言
12 条回复
sadfQED2
2022-10-10 21:13:06 +08:00
不是 java 写的,这不够企业级啊 [狗头]
FreeBSD
2022-10-10 21:44:25 +08:00
@johng 有没有啥成功案例啊
lvsshuttao
2022-10-10 22:03:47 +08:00
升太快了,我还在用 2.0.3
chenall
2022-10-10 23:43:57 +08:00
新项目考虑用新版的,旧的还是继续用旧版的。
我还在用 1.6 的没精力升级😭😭
wzw
2022-10-11 07:02:25 +08:00
@chenall #4 我也还在用 1.6……
daiv
2022-10-11 07:36:00 +08:00
很棒的框架, 我们是用来写 api 和处理数据等
GP1
2022-10-11 07:40:21 +08:00
有那么多的框架,为什么要用你们的呢?
你们的框架和其他框架比,优缺点是什么呢?
用了有什么好处呢?
sunny1688
2022-10-11 09:12:02 +08:00
gin 不香吗
dic
2022-10-11 10:09:16 +08:00
之前写了一个自己的小网站用的 GoFrame ,网站都写的差不多了,最后用到 ORM 的多对多功能时发现非常难用,文档上也把多对多直接省略了,最后直接换成 Echo + Ent 舒服多了。
sauren
2022-10-11 10:12:12 +08:00
支持支持~~~ 我正在用~
dorothyREN
2022-10-11 15:56:24 +08:00
还是 springboot 香
darkyoung
2022-10-17 18:03:07 +08:00
支持下!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/885890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX