# go-spring **Repository Path**: zdchao/go-spring ## Basic Information - **Project Name**: go-spring - **Description**: Go-Spring 是模仿 Java Spring 全家桶实现的一套 GoLang 应用程序框架 - **Primary Language**: Shell - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.oschina.net/p/go-spring - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 34 - **Created**: 2021-11-16 - **Last Updated**: 2021-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
logo
license go-version release
Go-Spring 的愿景是让 Go 程序员也能用上如 Java Spring 那般威力强大的编程框架。 其特性如下: 1. 提供了完善的 IoC 容器,支持依赖注入、属性绑定; 2. 提供了强大的启动器框架,支持自动装配、开箱即用; 3. 提供了常见组件的抽象层,支持灵活地替换底层实现; Go-Spring 当前使用 Go1.14 进行开发,使用 Go Modules 进行依赖管理。 ### IoC 容器 Go-Spring 不仅实现了如 Java Spring 那般功能强大的 IoC 容器,还扩充了 Bean 的概念。在 Go 中,对象(即指针)、数组、Map、函数指针,这些都是 Bean,都可以放到 IoC 容器里。 | 常用的 Java Spring 注解 | 对应的 Go-Spring 实现 | | :-- | :-- | | `@Value` | `value:"${}"` | | `@Autowired` `@Qualifier` `@Required` | `autowire:"?"` | | `@Configurable` | `WireBean()` | | `@Profile` | `ConditionOnProfile()` | | `@Primary` | `Primary()` | | `@DependsOn` | `DependsOn()` | | `@ConstructorBinding` | `RegisterBeanFn()` | | `@ComponentScan` `@Indexed` | Package Import | | `@Conditional` | `NewConditional()` | | `@ConditionalOnExpression` | `NewExpressionCondition()` | | `@ConditionalOnProperty` | `NewPropertyValueCondition()` | | `@ConditionalOnBean` | `NewBeanCondition()` | | `@ConditionalOnMissingBean` | `NewMissingBeanCondition()` | | `@ConditionalOnClass` | Don't Need | | `@ConditionalOnMissingClass` | Don't Need | | `@Lookup` | —— | ### 属性绑定 Go-Spring 不仅支持对普通数据类型进行属性绑定,也支持对自定义值类型进行属性绑定,而且还支持对结构体属性的嵌套绑定。 ``` type DB struct { UserName string `value:"${username}"` Password string `value:"${password}"` Url string `value:"${url}"` Port string `value:"${port}"` DB string `value:"${db}"` } type DbConfig struct { DB []DB `value:"${db}"` } ``` 上面这段代码可以通过下面的配置进行绑定: ``` db: - username: root password: 123456 url: 1.1.1.1 port: 3306 db: db1 - username: root password: 123456 url: 1.1.1.1 port: 3306 db: db2 ``` ### Boot 框架 Go-Spring 提供了一个功能强大的启动器框架,不仅实现了自动加载、开箱即用,而且可以非常容易的开发自己的启动器模块,使得代码不仅仅是库层面的复用。 ### 快速示例 下面的示例使用 v1.1.0-rc2 版本测试通过。 ``` import ( "fmt" "github.com/go-spring/spring-core/gs" "github.com/go-spring/spring-core/web" _ "github.com/go-spring/starter-echo" ) func init() { gs.Object(new(Controller)).Init(func(c *Controller) { gs.GetMapping("/", c.Hello) }) } type Controller struct { GOPATH string `value:"${GOPATH}"` } func (c *Controller) Hello(ctx web.Context) { ctx.String("%s - hello world!", c.GOPATH) } func main() { fmt.Println(gs.Run()) } ``` 启动上面的程序,控制台输入 `curl http://localhost:8080/`, 可得到如下结果: ``` /Users/didi/go - hello world! ``` 更多示例: https://github.com/go-spring/go-spring/tree/master/examples ### 详细文档 [https://docs.lavend.net/](https://docs.lavend.net/) ### 项目成员 #### 发起者(负责人) [@lvan100 (LiangHuan)](https://github.com/lvan100) #### 优秀贡献者 [@CoderPoet](https://github.com/CoderPoet) 、[@limpo1989](https://github.com/limpo1989) #### 特别鸣谢 [@shenqidebaozi](https://github.com/shenqidebaozi) 如何成为贡献者?提交有意义的 PR 或者需求,并被采纳。 ### QQ 交流群
QQ群号:721077608 ### 微信公众号 ### 支持我们! 为了更好地吸引和激励开发者,我们需要您的捐赠,帮助项目快速发展。 ### License The Go-Spring is released under version 2.0 of the Apache License.