长安链研究笔记 -IOC 容器
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star
长安链研究笔记-IOC 容器
IOC 容器在 common 项目的 cantainer 包下,这个包是长安链实现模块可扩展定制化的基础,需要研究清楚
核心方法先了解 2 个:
一个是注册实例
一个是获取实例:
看看具体的用法:
该测试方法,传递了一个构造函数:NewFoobar, 返回参数是 Foobarer
Foobarer 是一个接口:
返回的 Foobar 实例
在 Foobar 上有个 Say 函数,相当于 Foobar 是 Foobarer 的是一个实现子类
关系理清楚后,再看测试代码:
复制代码
看看输出结果:
这是因为调用它的 say 方法的时候,因为 foo 和 bar 通过上面的两个注册,已经注册了进去
这是最简单的用法。
然后看看它的其他用法:
这个方法有了一个 Optional 方法,参数 0. 代表,NewFoobar 构造器函数的第一个参数可以不用注入,也能正常返回 NewFoobar 构造器的创建的对象实例。
这个返回的对象,传入的参数,有两个子对象 Bar 和 Baz 都满足,但可以通过定义 Default 来优先填充进去。
这里的 dependsOn,指的是第一个参数依赖一个叫 bar 的实例。
这里面有两个可以满足对象,Bar 和 Baz,但是因为指定了名称 bar,所以只能是 Bar 这个实例被注入。
如果缺失,就会报错。
然后 name 函数可以注册对象的名称
评论