Skip to content

Latest commit

 

History

History
158 lines (126 loc) · 3.69 KB

README_CN.md

File metadata and controls

158 lines (126 loc) · 3.69 KB

English

License codebeat badge Go Report Card GoDoc Build Status Coverage Status

gioc是一个轻量级的Ioc框架,它提供注册表和工厂、依赖解决方案

特性

安装

go get -u github.com/vlorc/gioc

快速开始

  • 创建根模块
gioc.NewRootModule()
  • 导入模块
NewModuleFactory(
    Import(
        ConfigModule,
        ServerModule,
    )
)
  • 声明实例
NewModuleFactory(
    Declare(
        Instance(1), Id("id"),
        Instance("ioc"), Id("name"),
    ),
)
  • 导出实例
NewModuleFactory(
    Export(
        Instance(1), Id("id"),
        Instance("ioc"), Id("name"),
    ),
)
  • 条件导入
NewModuleFactory(
    Condition(
        HavingValue(Equal("redis"), types.StringType, "cache.type"),
        Import(RedisModule),
    ),
    Condition(
        Or(
            Not(HavingBean(types.StringType, "cache.type")),
            HavingValue(Equal("memory"), types.StringType, "cache.type"),
        ),
        Import(MemoryModule),
    ),
)

例子

  • 基本模块
import (
    ."github.com/vlorc/gioc"
    ."github.com/vlorc/gioc/module"
    ."github.com/vlorc/gioc/module/operation"
)

// config.go
var ConfigModule = NewModuleFactory(
    Export(
        Mapping(map[string]interface{}{
            "id": 1,
            "name": "ioc",
        }),
    ),
)

// main.go
func main() {
    NewRootModule(
        Import(ConfigModule),
        Bootstrap(func(param struct{ id int; name string }) {
            println("id: ", param.id, " name: ",param.name)
        }),
    )
}

许可证

这个项目是在Apache许可证下。查看完整的许可证文本的许可证文件。

接口

  • Provider(提供商)
    • 提供工厂发现
    • 提供实例填充
  • Factory(工厂)
    • 负责生成实例
    • 基本工厂有价值工厂,方法工厂,代理工厂,单例工厂,类型工厂
  • Register(注册器)
    • 作为工厂和选择器的连接
    • 提供类型、实例、方法工厂转换
  • Dependency(依赖)
    • 是目标类型依赖性分析结果的集合
    • 通过实例转换为注射器
  • Container(容器)
    • 提供Register和Provider,并且父容器组成遍历
    • 转换为只读提供程序
    • 转换为密封容器
  • Selector(选择器)
    • 通过类型和名称寻找工厂
  • Module(模板)
    • 导入模块
    • 导出工厂
    • 声明工厂

路线图

有关计划特性和未来方向的详细信息请参考路线图

关键字

依赖注入,控制反转

参考