goioc Go IOC 框架开源项目

我要开发同款
匿名用户2019年04月02日
170阅读

技术信息

开源地址
https://github.com/gosrv/goioc
授权协议
MIT

作品详情

goioc是一个GoIOC框架

使用步骤gogetgithub.com/gosrv/goioc加载配置文件loader:=gioc.NewCofigLoader()err:=loader.Load("example/cof/cofig.jso")util.VerifyNoError(err)创建IBeaCotaierBuilderbuilder:=gioc.NewBeaCotaierBuilder()加入1个ITagParser和若干个ITagProcessorbuilder.AddBea(loader)builder.AddBea(gioc.NewBeaTagProcessor(builder.GetBeaCotaier()))builder.AddBea(gioc.NewCofigValueTagProcessor(loader))builder.AddBea(gioc.NewTagParser())builder.AddBea(gioc.NewBeaBeaCoditioIjector())加入专属beabuilder.AddBea(otherBeas...)构建容器builder.Build()bea

放入容器中的对象就是一个bea,容器可以针对bea的成员变量做一些注入操作,比如其它bea实例的注入,或者配置数据的注入

IBeaCotaierBuilder

用来构建bea容器,并完成注入,bea的注入操作由ITagProcessor完成构建过程

收集满足条件的bea(通过IBeaCoditio判断条件十分成立)获取所有的ITagProcessor,并按优先级排序按ITagProcessor的优先级先后处理所有满足条件的bea,这也是注入处理IBeaCoditio

通过内嵌接口IBeaCoditio来实现条件判断,只有生效的bea才会被容器操作

NewCoditioAd()只有所有的条件都满足才能通过NewCoditioOr()有一个条件满足就能通过NewCoditioOValue()当配置文件中存在配置项时才能通过NewCoditioOBeaType()当存在某个类型的bea时才能通过NewCoditioOBeaName()当存在某个名字的bea时才能通过系统级tag

标注在bea上,可以执行一些特定意义的注入,目前支持两种系统级tag:bea和cfg

tagbea"bea"通过类型注入,会注入其它同类型的bea,如果不是slice,要求容器内有且仅有一个次类型的bea,如果是slice,则可以有任意个"bea.ame"通过bea名字注入,必须存在并且只能有一个"bea.required"如果没找到会不会报错,默认是truetypeBeaCstruct{beaAIBeaA`bea:""bea.ame:"beaa"bea.required:"true"`}tagcfg"cfg"注入配置文件中的配置项"cfg.d"注入特定域的配置项,与ICofigBase配合使用,调整配置注入的根节点"cfg.default"如果配置文件中不存,则使用的默认配置typeBeaCofigstruct{NamestrigLevelitAgeit}typeBeastruct{//注入配置文件的配置项"cfg.a"CofigA*BeaCofig`cfg:"cfg.a"`//注入配置文件的配置项"cfg.b"CofigB*BeaCofig`cfg:"cfg.b"`}ITagProcessor

可以通过实现接口ITagProcessor来自定义tag注入器,你还可以为它指定一个优先级,如果它没有任何依赖,则可以设置为系统级tag

ITagParser

解析tag标签,容器中只能存在一个,而且必须有一个,用来解析tag

exaple

请查看example1.go/example2.go/example3.go/example4.go

gcluster

https://github.com/gosrv/gclusterioc容器的应用:游戏服务器引擎框架(用来开发游戏引擎的引擎)

功能介绍

goioc 是一个 Go IOC 框架 使用步骤 go get github.com/gosrv/goioc 加载配置文件
  loader := gioc.NewConfigLoader()...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论