forked from go-spring/go-spring
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRELEASE
202 lines (136 loc) · 9.92 KB
/
RELEASE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
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 过滤器;支持数组注入,等等。