您的位置:首页 > 编程语言 > Java开发

《Spring揭秘》第四章 读书笔记 —— Spring的IoC容器之BeanFactory

2016-10-26 16:24 645 查看
在进入BeanFactory之前,还是先说说IoC容器和IoC Service Provider之间的关系



Spring提供了两个容器:正准备介绍的BeanFactory和ApplicationContext容器

BeanFactory 基础类型IoC容器,提供完整的IoC服务支持,默认采用lazy-inti初始化方式

适用:资源有限、功能要求不是很严格

ApplicationContext 在BeanFactory基础之上构建,提供高级特性:事件发布和国际化信息支持

两者准确的关系怎么样的呢:



准确的来说,BeanFactory真正能够改变的东西,就是之前我们想要获取某个对象的时候,是自己去创建,主动寻找获取;而BeanFactory可以将我们需要的依赖推送过来。

通常的话,会通过XML文件来实现这种依赖管理:

<beans>
<bean id="djNewsProvider" class="..FXNewsProvider">
<constructor-arg index="0">
<ref bean="djNewsListener"/>
</constructor-arg>
<constructor-arg index="1">
<ref bean="djNewsPersister"/>
</constructor-arg>
</bean>
...
</beans>


具体的实现:

ApplicationContext container = new ClassPathXmlApplicationContext("配置文件路径");
FXNewsProvider newsProvider = (FXNewsProvider)container.getBean("djNewsProvider"); newsProvider.getAndPersistNews();


这里的调用是通过getBean()方法获取,从这里可以看出spring的具体怎么实现映射。

BeanFactory 只是一个接口,所以具体的使用中,需要使用一个具体实现类实现该接口进行Bean的管理。



可以通过图中的关系结构看出,虽然我们需要的对象都是属于BeanFactory的,实际上使用的对象是在BeanDefinitionRegistry中的,书中的比方就很恰当:BeanFactory相当于图书馆,虽然借书要进图书馆,但是书都放在书架上面,所以图中的BeanDefinitionRegistry就像是图书馆的书架。

Spring提供了org.springframework.beans.factory.support.PropertiesBeanDefinition-Reader类用于Properties格式配置文件的加载,所以提供好配置文件

文中有提到BeanFactory的对象注册和依赖绑定,直接编码格式,这种方式是经历了注册-构造-setter(),最终完成绑定;另一种方式就是基于注解的依赖注入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring 读书笔记 ioc