http://blog.csdn.net/tc2015/article/details/52326112
IoC Service Provider :提供依赖注入服务
3.1 IoC Service Provider的职责
业务对象的构建管理:将对象构建逻辑从客户端对象剥离出来,以免这部分逻辑污染业务对象的实现。
业务对象间的依赖绑定( IoC Service Provider的最终使命):将对象所依赖的对象注入绑定,从而保证每个业务对象在使用的时候,可以处于就绪状态。
3.2 运筹帷幄的秘密—— IoC Service Provider如何管理对象间的依赖关系
记录对象之间关系的方式:
通过最基本的文本文件来记录被注入对象和依赖对象之间对应关系
通过描述性较强的XML文件格式来记录对应关系
通过编写代码的方式来注册这些对应的信息
甚至,你可以用语音方式来记录对象间的依赖注入关系(我的脑洞突然就大开了。。)
下面会讲到现实中注册对象管理信息的方式:
3.2.1 直接编码方式
大部分的IoC容器都支持直接编码方式,比如PicoContainer、Spring、Avalon等。在容器启动之前,我们就可以通过程序编码的方式将被注入对象和依赖对象注册到容器中,并明确她们相互之间的依赖的注入关系。
代码有IoContainer,这类我也没找到,忽略过去 了。。后面会讲到!
3.2.2 配置文件方式
这是一种较为普遍的依赖注入关系管理方式。(普通文本文件、properties文件、XML文件等)。当然最为常见的是XMl文件
Spring配置方文件:
然后可以使用:
3.2.3 元数据方式
书上提到了 google guice(一种DI框架)
通过注解@Inject,指明需要IoC Service Provider通过构造方法注入。这里是为Car注入其所依赖的对象。其它的依赖相关信息,由Module提供,如下:
然后我们可以使用了:
3.3 小结
讨论了IoC Service Provider的基本职责,以及它常用的几种依赖关系管理方式。Ioc Service Provider 只是为了简化概念而提出的一个一般性的概念。 下一章, 将由一般到特殊, 一起深入了解Spring提供的IoC容器。