go-spring

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

APACHE-2.0 License

Stars
1.6K
Committers
13

Bot releases are hidden (Show)

go-spring - v1.1.3 Latest Release

Published by lvan100 about 2 years ago

[json] support custom json package
[dync] update the fields that need to be updated
[dync] support user-defined dync types
[log] simplify and support structured log api
[web] remove FilterChain.Continue
[web] add HttpGet/HttpPost/* methods
[web] support built-in binding and validator
[redis] remove *Operations wrappers

go-spring - v1.1.2

Published by lvan100 about 2 years ago

新增 atomic.String 类型;
新增 bean convert 机制,可以实现 bean 共享;
新增 spring-core/dync 包,实现动态配置安全刷新;
统一 expr 表达式求值实现,用于结构体字段求值及校验;
使用更加严格的 conf 键值校验,完善对 nil 键值的处理;
收窄 bean 类型判断,基础类型指针不再认为是 bean 类型;
函数 bean 使用方法的名称而不再使用 bean 的类型作为名称;

go-spring - v1.1.1

Published by lvan100 about 2 years ago

继续完善日志架构,包括支持结构化日志、支持 tag 过滤器、支持 logger 注入等;
命令行修改为仅支持 -D = 或者 -D 形式;
优化 http.ResponseWriter 赋值方式。

go-spring - v1.1.0

Published by lvan100 about 2 years ago

在经历了一年半的折腾后,go-spring 1.1.0 终于发布了。
它是一个全新的版本,命名更加符合 go 规范,模块划分更加合理,核心设计也更加简洁;
它是一个具有重大突破的版本,突破性的支持统一日志框架,突破性的支持流量录制和回放;
它是一个功能庞大的版本,涵盖了日常开发所需的方方面面,再也不用纠结使用哪个依赖包。

go-spring - v1.1.0-rc4

Published by lvan100 over 2 years ago

go-spring - v1.1.0-rc3

Published by lvan100 almost 3 years ago

go-spring - v1.1.0-rc2

Published by lvan100 almost 3 years ago

go-spring - v1.1.0-rc1

Published by lvan100 almost 3 years ago

publish v1.1.0-rc1

go-spring - v1.1.0-beta

Published by lvan100 about 3 years ago

go-spring - v1.1.0-alpha

Published by lvan100 about 3 years ago

"publish v1.1.0-alpha"

go-spring - v1.0.5

Published by lvan100 about 4 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 风格的测试框架。
go-spring - v1.0.4

Published by lvan100 over 4 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,等等。

go-spring - v1.0.3

Published by lvan100 over 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 功能(实验性支持),等等。
go-spring - v1.0.2

Published by lvan100 over 4 years ago

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

go-spring - v1.0.1

Published by lvan100 over 4 years ago

更新文档

go-spring - v1.0.0

Published by lvan100 over 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 自身的环境变量支持文件配置,更完善的单元测试,增加优秀贡献者名单,等等。
go-spring - v1.0.0-rc

Published by lvan100 almost 5 years ago

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

go-spring - v1.0.0-beta

Published by lvan100 almost 5 years ago

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

go-spring -

Published by lvan100 almost 5 years ago