spring源码分析_spring ioc

spring源码分析_spring ioc

ID:10227490

大小:469.00 KB

页数:9页

时间:2018-06-12

spring源码分析_spring ioc_第1页
spring源码分析_spring ioc_第2页
spring源码分析_spring ioc_第3页
spring源码分析_spring ioc_第4页
spring源码分析_spring ioc_第5页
资源描述:

《spring源码分析_spring ioc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Spring源代码解析(一):IOC容器基本概念对于Spring的使用者而言,IOC容器实际上是什么呢?我们可以说BeanFactory就是我们看到的IoC容器,当然了Spring为我们准备了许多种IoC容器来使用,这样可以方便我们从不同的层面,不同的资源位置,不同的形式的定义信息来建立我们需要的IoC容器。 在Spring中,最基本的IOC容器接口是BeanFactory-这个接口为具体的IOC容器的实现作了最基本的功能规定-不管怎么着,作为IOC容器,这些接口你必须要满足应用程序的最基本要求: BeanFactory的实现在BeanFactor

2、y里只对IOC容器的基本行为作了定义,根本不关心你的bean是怎样定义怎样加载的。Spring提供了一个BeanFactory的基本实现,XmlBeanFactory同样的通过使用模板模式来得到对IOC容器的抽象-AbstractBeanFactory,DefaultListableBeanFactory这些抽象类为其提供模板服务。其中通过resource接口来抽象bean定义数据,对Xml定义文件的解析通过委托给XmlBeanDefinitionReader来完成。下面简单的演示IOC容器的创建过程:这些代码演示了以下几个步骤:   1.创建IO

3、C配置文件的抽象资源   2.创建一个BeanFactory [容器,装在beans的Map实体,还有定义了一些对bean的操作]  3.把读取配置信息的BeanDefinitionReader,这里是XmlBeanDefinitionReader配置给BeanFactory [解析资源文件]  4.从定义好的资源位置读入配置信息,具体的解析过程由XmlBeanDefinitionReader来完成,这样完成整个载入bean定义的过程。我们的IoC容器就建立起来了。[最后保存是通过map的更新,通过bean_name=>bean_definitio

4、ns(bean的实体)]XmlBeanFactory进入org.springframework.beans.factory.xml.XmlBeanFactory可以看到,XmlBeanFactory实现了刚才上面演示的几个步骤ApplicationContext 除了XmlBeanFactory,Spring还提供了另一种IOC容器----ApplicationContext (常用的上下文)在BeanFactory基础上扩展出的ApplicationContext-我们最常使用的上下文。除了具备BeanFactory的全部能力,上下文为应用程序又

5、增添了许多便利:    *可以支持不同的信息源,我们看到ApplicationContext扩展了MessageSource    *访问资源,体现在对ResourceLoader和Resource的支持上面,这样我们可以从不同地方得到bean定义资源    *支持应用事件,继承了接口ApplicationEventPublisher,这样在上下文中引入了事件机制而BeanFactory是没有的。那ApplicatiionContextIOC容器是怎么建立的呢?很简单,只需要一个句话就可以:publicFileSystemXmlApplicatio

6、nContext(StringconfigLocation)throwsBeansException{this(newString[]{configLocation},true,null);}关键是reflesh()。这个方法包含了整个BeanFactory初始化的过程,对于特定的FileSystemXmlBeanFactory,我们看到定位资源位置由refreshBeanFactory()来实现: 继承了AbstractApplicationContext,并且在loadBeanDefinitions通过XmlBeanDefinitionRead

7、er来解析资源文件。可以看到在loadBeanDefinitions里面调用同名的父方法。其其抽象父类的AbstractBeanDefinitionReader中来定义载入过程:当我们通过ResourceLoader来载入资源,别忘了了我们的GenericApplicationContext也实现了ResourceLoader接口:而我们的FileSystemXmlApplicationContext就是一个DefaultResourceLoader-GenericApplicationContext()通过DefaultResourceLoade

8、r: 我们的FileSystemXmlApplicationContext本身就是是DefaultResourceLoad

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。