go java web框架_GitHub - go-spring/go-spring: 基于 IoC 的 Go 后端一站式开发框架

Go-Spring是一个基于IoC的Go后端开发框架,旨在提供类似Java Spring的功能。它支持依赖注入、属性绑定和强大的启动器框架,允许灵活替换底层实现。框架内包含了对Java Spring注解的实现,如@Value、@Autowired等,并且支持属性绑定,包括对结构体的嵌套绑定。此外,Go-Spring还提供了一个启动器框架,实现自动加载和易于扩展的模块化开发。
摘要由CSDN通过智能技术生成

35a427f8612059d97797c8e50baf163f.png

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f676f2d737072696e672f676f2d737072696e67

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f676f2d6d6f642f676f2d76657273696f6e2f676f2d737072696e672f737072696e672d626f6f74

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f676f2d737072696e672f676f2d737072696e673f696e636c7564655f70726572656c6561736573

Go-Spring 的愿景是让 Go 程序员也能用上如 Java Spring 那般威力强大的编程框架。

其特性如下:

提供了完善的 IoC 容器,支持依赖注入、属性绑定;

提供了强大的启动器框架,支持自动装配、开箱即用;

提供了常见组件的抽象层,支持灵活地替换底层实现;

Go-Spring 当前使用 Go1.12 进行开发,使用 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 提供了一个功能强大的启动器框架,不仅实现了自动加载、开箱即用,而且可以非常容易的开发自己的启动器模块,使得代码不仅仅是库层面的复用。

快速示例

package main

import (

"github.com/go-spring/spring-boot"

_ "github.com/go-spring/starter-echo"

)

func init() {

SpringBoot.RegisterBean(new(Echo)).Init(func(e *Echo) {

SpringBoot.GetBinding("/", e.Call)

})

}

type Echo struct {

GoPath string `value:"${GOPATH}"`

}

func (e *Echo) Call() string {

return e.GoPath

}

func main() {

SpringBoot.RunApplication()

}

启动上面的程序,控制台输入 curl http://localhost:8080/, 可得到如下结果:

{"code":200,"msg":"SUCCESS","data":"/Users/didi/go"}

详细文档

项目成员

发起者(负责人)

优秀贡献者

特别鸣谢

如何成为贡献者?提交有意义的 PR 或者需求,并被采纳。

QQ 交流群

QQ群号:721077608

微信公众号

License

The Go-Spring is released under version 2.0 of the Apache License.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值