大家好啊!本次版本是 2022
年最后一个版本,也是 2023
年的第一个版本。该版本主要的目标:
- 采用接口化设计解决了主框架对第三方开源组件
go-redis
耦合的问题,使得主框架更加轻量,对工具化使用框架的场景更加友好。 - 通过开发工具提供升级 主框架、社区组件、开发工具 的命令,提高框架整体易用 性,并解决常见的社区组件与主框架版本不一致问题。
- 进一步按照接口与实现分离设计,通过社区组件方式,完善注册发现、配置管理对常用服务的对接,为下一步发布微服务组件做准备。
完整变更列表: https://github.com/gogf/gf/compare/v2.2.0...v2.3.1
新特性
- 将耦合较重的
redis
组件从主框架中解耦,作为社区组件提供。原有主框架增加redis
接口定义,社区组件redis
提供具体的接口实现。因此,请注意,主框架gredis
组件的使用方式发生了一些变更,在依赖redis
的项目中需要引入社区组件redis
实现,否则方法执行将会返回错误。保留兼容原有基础的Do/DoVar
方法,并增加了100+
项常用redis
操作方法: NoSQL Redis - 配置管理及注册发现组件新增常用服务接口实现:
- 配置管理(
nacos
): https://github.com/gogf/gf/tree/master/contrib/config/nacos - 注册发现(
zookeeper
): https://github.com/gogf/gf/tree/master/contrib/registry/zookeeper
- 配置管理(
- 新增工具命令
gf up
,用于便捷的框架升级操作,具体介绍请查看: 框架升 级-up
功能改进
社区组件
配置管理
- 新增
nacos
接口实现: https://github.com/gogf/gf/tree/master/contrib/config/nacos
注册发现
- 新增
zookeeper
接口实现: https://github.com/gogf/gf/tree/master/contrib/registry/zookeeper
数据库驱动
- 修复
clickhouse
在配置Charset
参数时的报错问题。 - 改进
clickhouse
获取数据表结构结果,返回的Index
顺序统一从0
开始。 - 改进
oracle
表结构获取SQL,以支持float64
数据类型。 - 修复
pgsql
对接口CheckLocalTypeForField
的实现,名称被错误定义为了CheckLocalTypeForValue
,造成生成dao
代码文件时的属性字段类型错误。 - 改进
pgsql
增加对schema
的支持,由于shcema
在大部分数据库服务中代表"数据库名称",并且也为了兼容旧版本,因此增加Namespace
配置参数用以表示pgsql
的Schema
,而原有的Schema
对象代表pgsql
的catalog
。
NoSQL组件
- 新增
redis
社区组件,实现gredis
相关接口: https://github.com/gogf/gf/tree/master/contrib/nosql/redis
数据库组件
gdb
- 为提高扩展性,
TX
事务对象改为了接口定义,原有的TX
对象改为了TXCore
方便自定义接口实现对象的嵌套: ORM事务处理 - 增加
Namespce
配置项,用以支持个别数据库服务Catalog&Schema
区分的问题,原有的Schema
继续代表数据库名称,而新增的NameSpace
代表个别数据库服务的Schema
配置: ORM使用配置 - 改进数据库名称配置,增加对中文数据库名称的支持。
- 执行
SQL
日志中增加当前执行的数据库名称打印。 - 修复
Count
方法的缓存问题。 gredis
- 新增
redis
社区组件,将耦合较重的redis
组件从主框架中解耦,作为社区组件提供。原有主框架增加redis
接口定义,而社区组件redis
提供具体的接口实现。因此,请注意,主框架gredis
组件的使用方式发生了一些变更,在依赖redis
的项目中需要引入社区组件redis
实现,否则方法执行将会返回错误。保留兼容原有的Do/DoVar
方法,并增加了100+
项常用redis
操作方法: NoSQL Redis
容器组件
gpool
- 增加
MustPut
方法,在Put
执行出错时直接panic
而不是返回错误对象 gqueue
- 改进
Len/Size
方法,解决可能存在的队列计数不准确问题。 - 改进
Len/Size
方法,返回参数类型由int
改为int64
。
错误处理
gcode
- 增加
CodeNecessaryPackageNotImport
错误码。 gerror
- 改进堆栈打印,统一使用空格替代
\t
,以保证打印格式兼容不同的展示终端。