2 Star 1 Fork 1

DiDi-opensource/go-spring

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
RELEASE 9.92 KB
一键复制 编辑 原始数据 按行查看 历史
Release History:
v1.0.5 2020-10-11
使用主项目和子项目的方式管理各个模块的代码,开发都在主项目上,子项目的代码
和主项目保持同步,这种方式实现了更简单的包名称。
Framework
1. 实现更合理的进程退出顺序,更符合 Bean 的生命周期,Register -> Init
-> OnStartApplication -> OnStopApplication -> Destory;
2. SafeGoroutine 函数提取到 SpringContext 接口,同时提供全局的
SpringBoot.Go 函数,可以安全的启动一个 Goroutine;
3. Conditional 增加 OnOptionalPropertyValue 函数,当属性值不存在时默
认条件成立;
4. 属性值的 Key 可以为空,形如 value:"${:=kie}",Bug is Feature;
5. 增加 Banner 启动图案,同时打印 Go-Spring 的版本信息,可以通过 API 设
置 Banner 的内容以及是否显示 Banner;
6. 全面引入属性值引用语法,从而依赖注入的对象可以通过配置项进行指定,结构体字
段的默认属性值也支持引用语法,而且支持多层嵌套;
7. 收集语法支持指定顺序,例如 [*,web-server-starter],在此基础上实现了
command-line-runner.collection 配置项对 Runners 的排序;
8. 规范 starter 包的命名规则、包结构、Bean 名称等;
9. 支持自定义配置文件读取器,支持基于 scheme 的属性源扩展,方便用户对配置项
的来源进行扩展;
10. 在配置文件解析完成之后增加一个扩展点,增加获取具有相同前缀的属性分组的接口;
11. Method Bean 支持注册多个 parent 但最终只有一个有效,否则抛出 panic;
12. 统一使用 Bean 的类型字符串作为 Bean 的默认名称;
13. 增加 RegisterBeanDefinition 函数统一 Bean 的注册过程,同时简化了 Bean
的构造函数;
14. Web 容器运行过程中自身发生错误的话会自动退出程序,例如端口占用错误等;
15. 重塑日志接口,解决调用点文件名称及行号信息不准确的 BUG;
Web
1. 增加 Request、Put 和 Delete 的函数扩展 (RequestMapping、RequestBinding、
PutMapping、PutBinding、DeleteMapping、DeleteBinding);
2. 参数校验器 WebValidator 和 WebContainer 的内置实现进行分离,用户可以使用
SpringWeb 提供的参数校验器,也可以实现自己的参数校验器;
3. 去掉 SpringWeb.METHOD 函数,重新规范 SpringWeb.BIND 处理函数的格式,和一
般函数的写法保持一致;
4. ResponseWriter 函数返回增强的 http.ResponseWriter 接口,可以在中间件内获
取已经设置的 HTTP 返回码;
5. 所有的 Response 函数都返回 error 值,SpringWeb 框架保证自身不会抛出 panic;
6. 增加 Abort 函数,可以在中间件内中断请求,这种方式比 panic 更友好;
7. 新增 Route 方法,支持路由分组嵌套;
8. WebContainer 可以通过回调获取容器自身运行过程中产生的错误;
MongoDB [新增]
1. 新增 MongoDB 客户端启动器;
gRPC [新增]
1. 新增 gRPC 服务端和客户端启动器;
Message [新增]
1. 新增 RabbitMQ 生产者和消费者启动器;
JUnit [新增]
1. 实现了一个简单的适应 Go-Spring 风格的测试框架。
v1.0.4 2020-06-23
该版本最大的特点是引入 BeanSelector (选择器) 和 Bean Tag,进而统一了
GetBean、FindBean 和 CollectBeans 三大函数的关系。其他改动点如下:
1. 解决了 WebServer 重复注册的问题,实现了路由注册时的多端口匹配机制,支
持 Receiver 方法注册路由,整合了 Filter 和 Condition 机制,可以更好的
打印 URL 注册信息,支持 Server、Container、Router、Mapper 四重级别的
过滤器;
2. 支持更多种数组值的绑定,收集模式支持指定 Bean 选择器,扩展 ${} 的语法,
当引用类型遇见 ${} 时首先获取对应的属性值,然后使用获取到的属性值当做 tag
进行 Bean 的筛选;
3. 删除非严格模式,删除注入过程中 Bean 排序和堆栈 Watch 功能,删除关闭
自动导出功能的函数,删除事件通知函数;
4. 支持 destroy 函数按顺序依次调用,修复 Map 属性值优先返回默认值的 BUG,
等等。
Web
Handler 提升为接口,打印更丰富的路由信息;FilterChain 提升为接口,完美适
配 echo 和 gin 的中间件机制;全面统一 echo、gin 以及 {} 路由风格;全面实
现 WebServer、WebContainer、Router、Mapper 四个级别的 Filter 机制;
WebContainer 增加 ReadTimeout 和 WriteTimeout 配置;BIND 模式支持
WebContext 参数,支持无参和无返回值,RPC 处理函数可定制;增加 gin、echo
与 WebContext 之间的互转函数;改造 WebServer 流式接口;优化 Swagger
使用;减小 WebContainer 方法集;引入参数校验框架;修复 gin 路由的 BUG;
增加 WebContext.SetRequest 函数,等等。
v1.0.3 2020-04-24
1. Bean 规则:使用具名函数的函数名作为函数 Bean 的默认名称,函数 Bean
支持普通参数和 Option 参数同时使用,支持 inject 作为注入关键字,支持
export 标签自动导出 Bean 实现的接口,Init 和 Destroy 支持更复杂的函数
形式(多入参、接口函数等),严格模式下指定注入 Bean 的名称以防没有显示导出
接口;
2. API 变化:增加关闭严格模式的 API 接口,推荐使用 Export 接口替换
AsInterface 接口,增加一种基于 Condition 的即时运行机制(支持参数注入),
支持 Config 配置函数,实验性支持 RegisterMethodBeanFn();
3. 配置化:增加系统环境变量过滤功能,支持 int、string、bool 及自定义值类
型的数组默认值;
4. Web 模块:增加 Swagger Doc 功能(实验性支持),等等。
Web
初步实现 Swagger 框架,集成 Swagger-UI 和 ReDoc,增加 Swg Petstore
官方示例,统一 Spring-Web 的路由规则,和 echo 保持一致,对gin 进行适配,
支持 {} 路由风格,等等。
v1.0.2 2020-03-24
优化 SpringBean 存储;RequestMapping 支持方法组合,增加封装 Bind 操
作的 Web RPC 适配函数;array 定义为值类型。
Web
重新设计 Request 接口,支持方法组合,支持 Container 级别的 Filter 配置,
适配 echo 和 gin 原生 handler,增加封装 Bind 操作的 Web RPC 适配函数。
v1.0.1 2020-02-23
1. 重新设计 Bean 注册机制,可以在严格模式和非严格模式两种模式下工作,严格
模式下必须使用 AsInterface() 导出接口,并且严格模式下能大幅提高 Bean
查找效率,实现线程安全地对注入堆栈变化过程的监控。
2. SpringContext 实现了 context.Context 接口,添加了事件通知机制,
新增了 Close 函数,配合 Bean 销毁回调,可以实现更多资源清理工作。
3. 属性值列表新增系统环境变量和命令行参数支持,参数覆盖的优先级是命令行->
系统环境变量->应用配置文件;添加获取 Duration 和 Time 属性值的方法,
支持 Map 类型值的属性绑定,支持嵌套属性使用 value 标签,函数参数属性绑定
支持空串参数,函数参数支持收集模式。
4. 支持对私有字段的注入,支持对没有 Tag 的结构体字段进行注入,支持对私有
字段注入功能打开或关闭;
5. 更新 parent、web 框架,增加 starter-go-redis、starter-mysql-
gorm 模块,实现了 MySQL 和 Redis 的 Mock 注入框架。
6. 增加对 condition 取反的 condition,go-spring 自身的环境变量支持
文件配置,更完善的单元测试,增加优秀贡献者名单,等等。
Web
适配 echo、gin、http 标准框架函数,更新 gin 和 echo 版本,修复少量 BUG。
v1.0.0-rc 2020-01-04
支持无 tag 的属性绑定;实现结构体数组及结构体指针数组元素的注入;构造函数
支持一个或包含 error 的两个返回值;Condition 支持属性值是否存在及属性值
匹配两种模式;PropertyCondition 支持简单的表达式;支持注册 Option 模
式的构造函数 Bean;支持成员方法 Bean;对构造函数 Bean 和成员方法 Bean
自动注入;函数返回值是接口类型时对真实类型进行注入;支持任意自定义值类型转换
器;扩充 Bean 的数据类型;新的 URL 注册机制,并且支持按名称设置 Filter;
Bean & OptionArg 支持可变参数函数。
Web
初步搭建 SpringWeb 框架,适配 echo 和 gin 两个主流 http web 框架,适配
LoggerContext 接口,初步实现 Filter 机制,增加 RPC 适配函数,等等。
v1.0.0-beta 2019-12-08
支持 Map、数组类型的属性绑定;实现简单的 Condition 机制;支持加载 k8s
config-map 格式的属性源;支持结构体数组属性的嵌套解析;支持通过构造函数
注册 Bean;去除回调风格的 Module 机制;使用更简单的构造函数 tag 机制;
增加运行时环境参数规则匹配;实现 DependsOn 机制;支持 Primary 对多个
候选 Bean 进行优先选择;增加 BindProperty 和 BindPropertyIf 接口;
支持自定义值类型的结构体嵌套的属性绑定。
v1.0.0-alpha 2019-10-27
发布 1.0.0 Alpha 版。引入 Singlet API,简化 Boot 框架使用;实现类型
转换器,结构体可以作为属性值进行注入;实现全限定名语法,支持复杂场景;属性
绑定支持结构体嵌套;实现了流式风格的 Web 路由分组函数;Autowire 引入可空
语法;增加 FindBean 函数;简化项目管理的复杂度;引入 "[]" 收集模式语法;
引入 Web 过滤器;支持数组注入,等等。
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/didiopensource/go-spring.git
[email protected]:didiopensource/go-spring.git
didiopensource
go-spring
go-spring
master

搜索帮助