《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文件来实现这种依赖管理:
具体的实现:
这里的调用是通过getBean()方法获取,从这里可以看出spring的具体怎么实现映射。
BeanFactory 只是一个接口,所以具体的使用中,需要使用一个具体实现类实现该接口进行Bean的管理。
可以通过图中的关系结构看出,虽然我们需要的对象都是属于BeanFactory的,实际上使用的对象是在BeanDefinitionRegistry中的,书中的比方就很恰当:BeanFactory相当于图书馆,虽然借书要进图书馆,但是书都放在书架上面,所以图中的BeanDefinitionRegistry就像是图书馆的书架。
Spring提供了org.springframework.beans.factory.support.PropertiesBeanDefinition-Reader类用于Properties格式配置文件的加载,所以提供好配置文件
文中有提到BeanFactory的对象注册和依赖绑定,直接编码格式,这种方式是经历了注册-构造-setter(),最终完成绑定;另一种方式就是基于注解的依赖注入。
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揭秘】------ 第四章学习 Spring的IoC容器之BeanFactory 02
- 【Spring揭秘】------ 第四章学习 Spring的IoC容器之BeanFactory 01
- Spring揭秘(四)——Spring的IOC容器之BeanFactory
- Spring原理(一)IoC容器的初始化过程之BeanFactory
- spring接口 BeanFactoryAware,动态获取IOC容器里面的对象(多例)
- 【spring源码学习】spring的IOC容器之BeanFactoryPostProcessor接口学习
- Spring 学习笔记(二)—— IOC 容器(BeanFactory)
- Spring源码学习之:模拟实现BeanFactory,从而说明IOC容器的大致原理
- spring ioc容器的学习笔记4---XmlBeanFactory ioc容器的简单设计原理解析
- Spring IoC容器之BeanFactory底层实现代码解析(一)
- 好记性不如烂笔头83-spring3学习(4)-spring的BeanFactory(IoC容器)
- spring beans源码解读之 ioc容器之始祖--DefaultListableBeanFactory
- Spring源码-IOC容器(四)-FactoryBean
- Spring学习08--IoC容器的高级特性(lazy-init、FactoryBean、BeanPostProcessor、autowiring)
- Spring学习之IOC容器BeanFactory和ApplicationContext(三)
- 《Spring揭秘》第四章 读书笔记 —— BeanFactory的XML之旅
- 王福强老师的《Spring揭秘》读后感-IOC容器之BeanFactory
- spring揭秘读书笔记----spring的ioc容器之BeanFactory
- spring——IOC容器BeanFactory和ApplicationContext对比
- Spring ioc容器启动流程—obtainFreshBeanFactory