IOC

什么是IOC

通常情况下,被注入对象会直接依赖于被依赖对象。但是,在IoC的场景中,二者之间通过IoC Service
Provider来打交道,所有的被注入对象和依赖对象现在由IoC Service Provider统一管理。被注入对象需要
什么,直接跟IoC Service Provider招呼一声,后者就会把相应的被依赖对象注入到被注入对象中,从而
达到IoC Service Provider为被注入对象服务的目的。

注入方式

IoC模式有三种依赖注入的方式,即构造方法注入(constructor
injection)、setter方法注入(setter injection)以及接口注入(interface injection)。

IoC Service Provider 的职责

业务对象的构建管理。
业务对象间的依赖绑定。

IoC Service Provider产品使用的注册对象管理信息的方式

1.硬编码

IoContainer container = ...; 
container.register(FXNewsProvider.class,new FXNewsProvider()); 
container.register(IFXNewsListener.class,new DowJonesNewsListener()); 
container.bind(IFXNewsListenerCallable.class, container.get(IFXNewsListener.class)); 
FXNewsProvider newsProvider = (FXNewsProvider)container.get(FXNewsProvider.class); 
newProvider.getAndPersistNews(); 

2.Spring配置文件

<bean id="newsProvider" class="..FXNewsProvider">
<property name="newsListener">
<ref bean="djNewsListener"/>
</property>
<property name="newPersistener">
<ref bean="djNewsPersister"/>
</property>
</bean>
<bean id="djNewsListener"
class="..impl.DowJonesNewsListener">
</bean>
<bean id="djNewsPersister"
class="..impl.DowJonesNewsPersister">
</bean>

container.readConfigurationFiles(...); 
FXNewsProvider newsProvider = (FXNewsProvider)container.getBean("newsProvider"); 
newsProvider.getAndPersistNews(); 

3.元数据方式Google Guice


使用Guice的注解标注依赖关系后的FXNewsProvider定义

FXNewsProvider所使用的Module实现

从Guice获取并使用最终绑定完成的FXNewsProvider

4.Spring的IoC容器和IoC Service Provider的关系


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容