Jul 10, 2017 10:38:44 AM
作者:zozoh
高级接口容器接口
NutIoc 实现了 Ioc2 接口,它继承自 Ioc 接口,并多出了两个方法。一个允许你自行添加自定义的值类型,另一个是允许你在获取对象时,链入自己的上下文环境
这个设计有什么用?
比如,在一个 Web 应用中,你希望在会话中保存一个数据源,你不希望这个数据源保存在 Application级别里。因为,只有当用户登录的时候,你才能确定你到底要连接哪个数据源。
那么,在配置文件中,我的那个数据源对象,以及所有引用它的对象,都会声明了 scope : "session"。每次启动一个会话,我们就创建一个 Session 的上下文,当请求发生时,就用通过 Ioc2 来获取对象—- 传入 session 上下文。 当会话停止时,会注销这个上下文,那么保存在里面的数据源也会彻底关闭
如果没有 Ioc2 这个接口,则做不到这一点
通过 ComboContext 链接
每次从 NutIoc 里获取对象,如果你想告诉容器:“嘿,我还有另外的一个缓存,请优先在里面查查”你可以这样调用:
Nutz.Ioc 默认提供了两个 IocContext:
- ScopeContext: 顾名思义,它只表示某一个指定的声明周期范围
- 当你的配置信息中 scope 一项同它的范围名称完全匹配时,它会接受你的对象
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和下修改和再使用。