掌管大局的IoC Service Provider
虽然业务对象可以通过IoC方式声明相应的依赖,但是最终仍然需要通过某种角色或服务将这些相互依赖的对象绑定到一起,而Ioc Service Provider就对应IoC场景中的这一角色
IoC Service Provider在这里是一个抽象出来的概念。
IoC Service Provider的职责
业务对象的构建管理。
在IoC场景中,业务对象无需关心所依赖的对象如何构建和如何取得,但这部分工作需要有人来做。IoC Service Provider承担了这个责任。业务对象间的依赖绑定
这个职责是最艰巨也是最重要的,这是IoC Service Provider最终使命之所在。IoC Service Provider通过结合之前构建和管理的所有业务对象,以及各个业务对象间可以识别的依赖关系,将这些对象所依赖的对象注入绑定,从而保证每个业务对象在使用的时候,可以处于就绪状态。
IoC Service Provider如何管理对象间的依赖关系
上一篇我们讲到,被注入对象可以通过多种方式通知IoC Service Provider为其注入相应的依赖。但问题在于,收到通知的IoC Service Provider是否就一定能完全领会被注入对象的意图,并及时有效地为其提供想要的依赖的呢?
IoC Service Provider需要某种方式来记录被注入对象与依赖对象之间的相应关系。
我们归纳下当前流行的IoC Service Provider产品使用的注册对象管理信息的方式:
直接编码方式
通过程序编码的方式将被注入对象和依赖对象注入到容器中,并明确他们之间的相互依赖关系。配置文件方式
这是一种较为普遍的依赖注入关系管理方式。元数据方式
直接在类中使用元数据信息来标注各个对象间的依赖关系,然后由Guice框架根据这些注解所提供的信息将这些对象组装后,交给客户端对象使用