Go 企业级框架 GoFrame 发布 v2.1 版本

大家好,本次发布的v2.1版本包含一些与业务实践相关的功能特性、改进以及Bug Fix,建议大家升级。

新特性

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

主要改进

社区组件

ORM驱动实现

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

注册发现实现

  1. 新增polaris北极星服务注册接口实现:https://github.com/gogf/gf/tree/master/contrib/registry/polaris
  2. 改进etcd服务注册发现接口实现组件:https://github.com/gogf/gf/tree/master/contrib/registry/etcd

注册发现

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

负载均衡

  1. 改进Node接口定义,新增Nodes接口定义。
  2. 修复HTTP Client下的服务发现负载均衡问题。

网络组件

  1. gclient
    1. 改进服务发现实现逻辑。
    2. 修复客户端关闭错误,引起的连接池无法复用问题。
  2. ghttp
    1. 改进Request.GetUrl方法对URL Schema获取细节。
    2. 参数接收支持UploadFile属性自动接收。
    3. 新增接口文档自定义UI指导文档:接口文档-自定义UI
    4. 接口文档默认依赖的外部JS CDN改为unpkg.com
    5. 改进服务注册实现逻辑。
    6. 改进内部细节实现逻辑。
    7. 修复参数为空判断问题。
  3. goai
    1. 改进更规范化符合OpenAPIV3协议实现。
    2. 支持所有x-开头的自定义标签,自动添加OpenAPIV3的结果中。

系统组件

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

容器组件

  1. garray
    1. 改进Unique方法性能,增加DeepCopy接口实现。
  2. glist
    1. 增加DeepCopy接口实现。
  3. gmap
    1. 增加DeepCopy接口实现。
  4. gset
    1. 增加DeepCopy接口实现。
  5. gtype
    1. 增加DeepCopy接口实现。
  6. gvar
    1. 增加Copy方法,用于深度拷贝当前泛型对象。
    2. 增加DeepCopy接口实现。

数据库组件

  1. gdb
    1. 新增WhereBuilder特性,用于更加灵活的SQL条件语句组合:ORM查询-Where/WhereOr/WhereNot
    2. 新增HOOK特性,用于自定义钩子事件处理:ORM链式操作-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. 改进WordWrap方法,使得对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方法。

开发工具

相对于主库稳定的代码组件,CLI开发工具在近期的版本发布有一些非兼容更新,各位在升级时注意发布记录,细节请查看源码调整。

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

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/200389/goframe-2-1-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。