什么是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
4.Spring的IoC容器和IoC Service Provider的关系