Go Spring Versions Save

基于 IoC 的 Go 后端一站式开发框架 ( All-in-One Development Framework on IoC for Go ) 🚀

v1.0.5

3 years ago

使用主项目和子项目的方式管理各个模块的代码,开发都在主项目上,子项目的代码和主项目保持同步,这种方式实现了更简单的包名称。

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

3 years ago

该版本最大的特点是引入 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,等等。

v1.0.3

4 years ago
  1. Bean 规则:使用具名函数的函数名作为函数 Bean 的默认名称,函数 Bean 支持普通参数和 Option 参数同时使用,支持 inject 作为注入关键字(和 autowire 同义),支持 export 标签自动导出 Bean 实现的接口,Init 和 Destroy 支持更复杂的函数形式(多入参、接口函数等),严格模式下指定注入 Bean 的名称以防没有显示导出接口;
  2. API 变化:增加关闭严格模式的 API 接口,推荐使用 Export 接口替换 AsInterface 接口,增加一种基于 Condition 的即时运行机制(支持参数注入),支持 Config 配置函数,实验性支持 RegisterMethodBeanFn()(是的,它又回来了,变得比以前更强大了);
  3. 配置化:增加系统环境变量过滤功能,支持 int、string、bool 及自定义值类型的数组默认值;
  4. Web 模块:增加 Swagger Doc 功能(实验性支持),等等。

v1.0.2

4 years ago

优化 SpringBean 的存储,RequestMapping 支持方法的组合,array 重新定义为值类型,等等。

v1.0.1

4 years ago

更新文档

v1.0.0

4 years ago
  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 自身的环境变量支持文件配置,更完善的单元测试,增加优秀贡献者名单,等等。

v1.0.0-rc

4 years ago

注释风格完全符合 godoc 要求, 完善了日志框架,增加了 web 启动器模块,SpringCore 模块大量重构,完善 Bean 类型,支持构造函数和成员方法 Bean,以及 BUG 修复。

v1.0.0-beta

4 years ago

这个版本新增了许多功能,支持了 map、slice、func 的注入,合并了 singlet 框架,增加了 bean 条件注册,支持了 k8s config-map 格式的属性配置文件,支持了构造函数注册 bean 等等。

v1.0.0-alpha

4 years ago