BeanDefinition的Resource定位】的更多相关文章

IOC容器的初始化过程主要包括BeanDefinition的Resource定位.载入和注册.在实际项目中我们基本上操作的都是ApplicationContex的实现,我们比较熟悉的ClassPathXmlApplicationContext.FileSystemXmlApplicationContext.XmlWebapplicationContext等.ApplicationContext的具体继承体系如下图所示: 其实,不管是XmlWebApplicationContext还是Classp…
1.以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefiniton.这时使用的是ClassPathResource,这意味着Spring会在类路径中去寻找以文件形式存在的BeanDefinition信息. ClassPathResource res = new ClassPathResource("beans.xml"); 这里定义的Resource并不能由DefaultListableBeanFactor…
以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefinition.这是使用的是ClassPathResource,意味着Spring会在类路径中去寻找以文件形式存在的BeanDefinition的信息. ClassPathResource res =new ClassPathResource('beans.xml'); 这里定义的Resource不能由DefaultListableBeanFactory直接使用,Sp…
1.我们重点看看AbstractRefreshableApplicationContext的refreshBeanFactory方法的实现,这个refreshBeanFactory被FileSystemXmlApplicationContext构造函数中的refresh调用.在这个方法中,通过createBeanFactory构建了一个IoC容器供ApplicationContext使用.这个IoC容器就是我们前面提到过的DefaultListableBeanFactory,同时,它启动了loa…
1.FileSystemXmlApplicationContext的实现 public class FileSystemXmlApplicationContext extends AbstractXmlApplicationContext { /** * Create a new FileSystemXmlApplicationContext for bean-style configuration. * @see #setConfigLocation * @see #setConfigLoca…
在前文提过,IOC 容器的初始化过程分为三步骤:Resource 定位.BeanDefinition 的载入和解析,BeanDefinition 注册. Resource 定位.我们一般用外部资源来描述 Bean 对象,所以在初始化 IOC 容器的第一步就是需要定位这个外部资源.BeanDefinition 的载入和解析.装载就是 BeanDefinition 的载入.BeanDefinitionReader 读取.解析 Resource 资源,也就是将用户定义的 Bean 表示成 IOC 容器…
我们知道Spring的IoC起到了一个容器的作用,其中装得都是各种各样的Bean.同时在我们刚刚开始学习Spring的时候都是通过xml文件来定义Bean,Spring会某种方式加载这些xml文件,然后根据这些信息绑定整个系统的对象,最终组装成一个可用的基于轻量级容器的应用系统. Spring IoC容器整体可以划分为两个阶段,容器启动阶段,Bean实例化阶段.其中容器启动阶段主要包括加载配置信息.解析配置信息,装备到BeanDefinition中以及其他后置处理,而Bean实例化阶段主要包括实…
前言 上一篇博文“ Spring IOC是怎样启动的 ”中提到了refresh()方法,这个就是容器初始化的入口.容器初始化共有三个阶段: 第一阶段:Resource定位 第二阶段:BeanDefinition解析 第三阶段:BeanDefinition注册 这一篇我们讲第一阶段Resource定位. 阅读目录 1.XmlWebApplicationContext的继承体系图 2.refresh()方法 3.Resource组件 1.  XmlWebApplicationContext的继承体系…
Spring通过ResourceLoader来处理得到的Resource.在前面我们知道容器初始化是以refresh()方法为入口的,内部的实现首先准备上下文,然后通过obtainFreshBeanFactory()方法获取beanFactory, protected ConfigurableListableBeanFactory obtainFreshBeanFactory() { refreshBeanFactory(); ConfigurableListableBeanFactory be…
1.在完成对代表BeanDefinition的Resource定位的分析后,下面来了解整个BeanDefinition信息的载入过程. 2.对IoC容器来说,这个载入过程,相当于把定义的BeanDefinition在IoC容器中转化成一个Spring内部表示的数据结构的过程. 3.IoC容器对Bean的管理和依赖注入功能的实现,是通过对其持有的BeanDefinition进行各种相关操作来完成的. 4.这些BeanDefinition数据在IoC容器中通过一个HashMap来保持和维护.当然这只…