大家好啊,GoFrame
框架今天发布了v2.6.0
正式版本啦!👏👏👏👏
本次版本主要是大量的代码改进和BugFix
工作。由于本次版本变更内容较多,以下中文介绍一些较为重要的改进点,详细的ChangeLog
请参考(特别是BugFix
):https://github.com/gogf/gf/releases/tag/v2.6.0
完整代码变更: https://github.com/gogf/gf/compare/v2.5.0...v2.6.0
感谢本次所有的贡献开发者:
框架最低依赖的Golang
版本从v1.15
升级到v1.18
。
g
g.Go方
法,用于便捷创建带有ctx
和recover
参数的异步goroutine
。glog
Handler
回调处理函数的HandlerInput
输入参数,增加Values
参数,该参数为日志打印时的输入参数列表:日志组件-HandlerHandlerStructure
通用组件方法,将日志打印内容按照结构化参数打印:日志组件-Handlerrotate
逻辑,解决在个别场景下文件无法rotate
的问题。gerror
brief/detail
):在brief
模式下,错误堆栈仅会打印非框架组件堆栈。在detail
模式下,错误堆栈会打印完整的框架代码调用链路。框架默认使用brief
模式:错误处理-其他特性gcode
gcode.CodeInternalPanic
错误码,框架组件捕获的所有panic
错误将会以此错误码返回。gmap
Diff
方法,用于对比并返回两个Map
的差异。gaes
PKCS7Padding/PKCS7UnPadding
方法。gdb
ConvertDataForRecord
转换方法,新增ConvertValueForField
转换方法。CheckLocalTypeForField
方法,返回参数类型string
修改为LocalType
类型。gdb.DB
接口的实现需要注意这个改动。Model.Partition
方法,允许数据库操作时用户显式指定分区参数。Model.LeftJoinOnFields/RightJoinOnFields/InnerJoinOnFields
方法,用于更便捷实现Join
关联操作。Model.WherePrefixNotIn
方法实现问题。gredis
Cluster
配置项,用于指定是否使用集群模式:Redis-配置管理Protocol
配置项,用于指定RESP
版本:Redis-配置管理gi18n
gclient
NoUrlEncode
特性,设置GET
请求不自动对参数做UrlEncode
编码。ghttp
windows
平台下的退出信号捕获后优雅退出。goai
ghttp.UploadFile
类型为OpenAPIv3
的File
类型。Path
对象上与Method
对象上重复的描述信息。gcfg
AdapterContent
配置接口实现,使用具体的配置内容来实现配置管理对象:配置管理-AdapterContentgctx
NeverDone
方法,用于包裹给定的ctx
对象并返回一个永不会过期和Cancel
的ctx
对象。gfile
0777
改为了0755
。Copy/CopyFile/CopyDir
方法,增加CopyOption
可选参数,用于控制复制逻辑的可选项。gmutex
Golang
新版本的mutex
改进gmutex.Mutex
对象,直接使用新版本标准库的TryLock/TryRLock
,不再自行实现这些重复的方法。保留LockFunc/TryLockFunc
方法。gmutex.RWMutex
对象,扩展自标准库的sync.RWMutex
对象,扩展新增了LockFunc/TryLockFunc、RLockFunc/TryRLockFunc
方法。gstr
List2/ListAndTrim2/List3/ListAndTrim3
方法,实现类似于PHP list
方法特性,将字符串拆分后作为多个结果值返回。CaseConvert
方法,用于按照给定的CaseType
类型参数执行字符串命名格式转换。gconv
ConvertWithRefer
方法,用于给定参数作为类型参考,并转换给定参数为指定参数的类型。gutil
FillStructWithDefault
方法,用于自动通过读取struct tag
读取默认值并填充给定的struct
对象/指针。gvalid
enums
校验规则不支持map
参数类型的问题。contrib/config/consul
组件,用于配置管理组件接口的consul
服务实现:https://github.com/gogf/gf/tree/master/contrib/config/consulcontrib/drivers/dm
组件:schema
参数配置。time.Time/*time.Time
时间类型参数操作。contrib/drivers/sqlite
组件,支持Insert Ignore
及Save
操作。contrib/drivers/sqlitecgo
组件,通过cgo
方式支持i386
系统架构。contrib/nosql/redis
组件:TLSConfig
配置,以支持TLS
链接Redis Server
。Protocol
配置项,以支持最新版本的Redis Server
。contrib/registry/nacos
组件,使用nacos
实现微服务的注册发现:https://github.com/gogf/gf/tree/master/contrib/registry/nacoscontrib/registry/file
组件,自动删除过期的注册项,避免客户端发现并连接过期的服务端地址。contrib/registry/polaris
组件部分实现问题。contrib/rpc/grpcx
组件:cli
工具安装方式,额外支持go install
安装方式:go install github.com/gogf/gf/cmd/gf/v2@latest
gf run
命令,新增WatchPaths/-w
配置,支持指定监听的路径列表,避免默认监听本地项目所有项目文件引发too many opened files
问题:自动编译-rungf gen ctrl
命令,新增Merge/-m
选项,用以控制生成的控制器代码文件按照api
层的文件生成,而不是默认按照api
接口拆分为不同的接口实现文件:接口规范-gen ctrlgf gen dao
命令,新增RemoveFieldPrefix/-rf
选项,用于自动去掉生成表字段的名称前缀:数据规范-gen daogf gen pbentity
命令,新增RemoveFieldPrefix/-rf
选项,用于自动去掉生成表字段的名称前缀:数据表PB-gen pbentitygf gen service
命令,支持自动识别logic
模块对象的方法注释生成到service
接口文件中。gf version/gf -v
命令,更详细的工具版本、运行环境、框架版本信息。init
包方法逻辑。gf gen dao
命令中指定Link
数据库配置失效的问题。