NutIoc 实现了 Ioc2 接口,它继承自 Ioc 接口,并多出了两个方法。 一个允许你自行添加自定义的值类型,另一个是允许你在获取对象时,链入自己的上下文环境
请阅读 org.nutz.ioc.IocContext 的接口文档, 你可以根据需要实现这个上下文接口
比如,在一个 Web 应用中,你希望在会话中保存一个数据源,你不希望这个数据源保存在 Application 级别里。因为,只有当用户登录的时候,你才能确定你到底要连接哪个数据源。
那么,在配置文件中,我的那个数据源对象,以及所有引用它的对象,都会声明了 scope : "session"。 每次启动一个会话,我们就创建一个 Session 的上下文,当请求发生时,就用通过 Ioc2 来获取对象 --- 传入 session 上下文。 当会话停止时,会注销这个上下文,那么保存在里面的数据源也会彻底关闭
如果没有 Ioc2 这个接口,则做不到这一点
在 org.ioc.impl.NutIoc 里,默认有一个 IocContext,它的 scope 是 "app"。
每次从 NutIoc 里获取对象,如果你想告诉容器:“嘿,我还有另外的一个缓存,请优先在里面查查” 你可以这样调用:
IocContext myCache = ...; // 获取你的缓存
MyObject obj = ioc.get(MyObjec.class, "objName", myCache);
Nutz.Ioc 默认提供了两个 IocContext:
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。