Go-Spring : Another Go Style!

Go-Spring 是模仿 Java 的 Spring 全家桶实现的一套 GoLang 的应用程序框架,仍然遵循“习惯优于配置”的原则,提供了依赖注入、自动配置、开箱即用、丰富的第三方类库集成等功能,能够让程序员少写很多的样板代码。

1.前言

去年年底的时候,我所在的团队由于业务调整,技术栈也随之发生改变,由之前的 PHP +Java 变成了 Golang + Java。初次接触 Golang,颇不适应,首先就是它那不同一般的语法,然后是没有一个成熟好用的开发框架。语法问题时间长了代码写的多了也就慢慢适应了,但是没有顺手的开发框架就太影响开发效率和代码质量了,作为一个资深的 Java + Spring 全家桶开发者,我希望能改变这一现状。经过一段时间的使用和探索,我发现完全可以搞出一套像 Spring 全家桶(Spring Framework + Spring Boot +Spring Cloud)那样的解决方案出来!

Spring 全家桶在 Java 世界的地位自然无需多言,它不仅为 Java 开发者证明了基于注解开发、基于 AOP 开发以及面向接口开发能够给程序带来极大的灵活性,更重要的是带来了依赖注入、声明式事务、统一的异常处理、模块自动化加载、更简单的 Maven 管理、更简单的单元测试等优秀的开发实践。

但是 GoLang 和 Java 毕竟不同,我为什么笃信自己肯定能搞出来呢?要回答这个问题,实际上是在回答另一个问题,即 Java 的哪些语言特性支撑了 Spring 全家桶能够实现那些核心能力,而 GoLang 又有哪些相似的语言特性?

追根溯源,Java 的字节码、反射、注解、包扫描等机制支撑了 Spring 全家桶能够实现 AOP 开发、依赖注入、声明式事务、模块自动化加载等核心特性。GoLang 因为没有字节码,所以不能实现 AOP 。但是 GoLang 有 Tags、Reflection、_ Imports、init() 机制,所以尽管实现起来不一定有 Java 优雅,但是也能实现依赖注入、模块自动化加载这些 Spring 全家桶的最核心特性。而且,尽管 GoLang 无法实现 AOP,但是也可以通过 Middleware 实现同样的功能。

经过一番探索和实践,终于 Go-Spring 诞生了!在我的眼中,Go-Spring 和 GoLang 本身一样,一出生就带着叛逆和

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值