新特性

  1. 开发工具新增gen service命令,支持自动化地根据logic层级代码,生成service接口代码、实现注入:接口维护-gen service
  2. 数据库组件特性:
    1. 新增WhereBuilder特性,用于更加灵活的SQL条件语句组合:
    2. 新增Hook特性,用于自定义钩子事件处理:ORM链式操作-Hook特性
  3. 框架新增DeepCopy特性,用于类型的深度拷贝:
    1. 新增gutil.Copy方法,用于深度拷贝指定内容。
    2. 泛型类型新增Copy方法,用于深度拷贝自身内容。
    3. 框架部分数据类型已支持深度拷贝特性,例如:gvar, garray, gmap等基础容器类型。

主要改进

  1. 新增drivers/clickhouse,用于对接clickhousegoframe ORM组件。
  2. 完善clickhouse/mssql/pgsql/sqlite/oracle组件单元测试。
  3. mysql驱动从主库迁移到社区模块,便于将mysql从主库解耦。因此从后续版本开始,开发者需要手动引入驱动依赖:
  1. 新增polaris北极星服务注册接口实现:https://github.com/gogf/gf/tree/master/contrib/registry/polaris
  2. 改进etcd服务注册发现接口实现组件:

注册发现

  1. Service实现对象改进为接口定义,并提供默认的Service实现,提高扩展性和易用性。
  2. 改进HTTP/GRPC Client&Server对接实现。

负载均衡

  1. 改进Node接口定义,新增Nodes接口定义。
  2. 修复HTTP Client下的服务发现负载均衡问题。
  1. gclient
    1. 改进服务发现实现逻辑。
  2. ghttp
    1. 改进Request.GetUrl方法对URL Schema获取细节。
    2. 参数接收支持UploadFile属性自动接收。
    3. 新增接口文档自定义UI指导文档:
    4. 接口文档默认依赖的外部JS CDN改为unpkg.com
    5. 改进服务注册实现逻辑。
    6. 改进内部细节实现逻辑。
    7. 修复参数为空判断问题。
  3. goai
    1. 改进更规范化符合OpenAPIV3协议实现。
    2. 支持所有x-开头的自定义标签,自动添加OpenAPIV3的结果中。
    3. 组件从protocol分类迁移到了net分类下,import路径发生改变。

系统组件

    1. 默认的文件系统接口实现新增对property文件格式的支持。
  1. gcmd
    1. 参数解析新增CaseSensitive配置,默认不区分大小写解析,特别针对结构化参数接收影响较大:
    2. 新增跨进程的链路跟踪特性:命令管理-链路跟踪
  2. glog
    1. 新增全局的Handler设置功能,开发者可以全局自定义处理glog组件的所有日志,例如全局输出JSON文件格式:
    2. 新增默认的JSON格式Handler供开发者使用:日志组件-Handler
  3. gsession
    1. 解决当访问用户过多造成的内存占用过大的问题。
  4. gproc
    1. 新增跨进程的链路跟踪特性:

容器组件

  1. garray
    1. 改进Unique方法性能,增加DeepCopy接口实现。
  2. glist
    1. 增加DeepCopy接口实现。
  3. gmap
    1. 增加DeepCopy接口实现。
  4. gset
    1. 增加DeepCopy接口实现。
  5. gtype
  6. gvar
    1. 增加Copy方法,用于深度拷贝当前泛型对象。
    2. 增加DeepCopy接口实现。
  1. gdb
    1. 新增WhereBuilder特性,用于更加灵活的SQL条件语句组合:ORM查询-Where/WhereOr/WhereNot
    2. 新增HOOK特性,用于自定义钩子事件处理:
    3. 改进数据提交到底层driver前的数据转换处理逻辑。
    4. mysql驱动从主库迁移到社区模块,便于将mysql从主库解耦。因此从后续版本开始,开发者需要手动引入驱动依赖:https://github.com/gogf/gf/tree/master/contrib/drivers

编解码组件

  1. gproperty
    1. 新增gproperty组件,用于解析Java Property格式文件。
  2. gjson
    1. 新增对property文件格式的编解码、数据操作支持:通用编解码-gjson
    2. 修复对大整形数据读取的精度丢失问题。

文本处理

  1. gstr
    1. 改进方法,使得对Unicode特别是中文换行更加友好。
    2. 修复RepliceI忽略大小写字符串替换在特定场景下的问题。
  1. gerror
    1. 新增Unwrap方法(同Next方法),用以支持Golang新版本的Unwrap错误接口。
    2. 新增Equal方法,用于判断两个错误是否相等:
    3. 新增Is方法,用于支持Golang新版本的Is错误接口:错误处理-错误比较

工具方法

  1. gconv
    1. 去掉整型转换时对八进制字符串的支持。
    2. 改进内部实现逻辑,提高可读性保障可维护性。
  2. gutil
    1. 新增gutil.Copy方法,用于深度拷贝指定内容。
    2. 改进gutil.Dump方法。

开发工具

  1. 改进build命令,支持指定pack代码文件的生成目录,参数有个别调整。
  2. 改进docker命令,支持多个docker tag的重命名及仓库自动推送。
  3. 改进gen dao命令,支持自定义dao/do/entity代码生成目录,不再强制生成到service/internal目录下:
  4. 新增gen service命令,支持自动化地根据logic层级代码,生成service接口代码:接口维护-gen service
  5. 修复run命令自定义程序启动参数问题、gofmt/goimports程序路径带空格问题。

不兼容事项

  1. mysql驱动从主库迁移到社区模块,便于将mysql从主库解耦。因此从后续版本开始,开发者需要手动引入驱动依赖:https://github.com/gogf/gf/tree/master/contrib/drivers
  2. ghttp.Response.WriteJson/Xml等方法不再返回error。根据编译错误调整即可。
  3. 数据库ORM操作参数中带有gtime.Time类型,为了解决时间精度丢失的问题,将会自动转换为time.Time类型再提交给底层的数据库。也就是说,gtime.Time类型参数也会受到数据库配置的时区配置参数影响。具体请参考: