springSpringFramework技术干货

Spring核心:IOC容器的实现(三)

2017-07-18  本文已影响71人  迷途小沙弥

ApplicationContext的那些事:

在前面几章,我们已经知道ApplicationContext是在原始的IOC容器BeanFactory基础上,添加了许多高级特性,那么具体添加了哪些特性?

ApplicationContext的接口关系:

1、MessageSource:ApplicationContext扩展了MessageSource接口,提供了消息处理的功能(i18n或者国际化),同时,与HierarchicalMessageSource一起使用,它还能够处理嵌套的消息,这些是spring提供的处理消息的基本接口。

2、ResourceLoader:访问资源。对不同地方得到Bean定义资源的统一抽象。这种抽象使用户程序可以灵活地定义Bean定义信息,尤其是从不同的I/O途径得到Bean定义信息。

3、ApplicationEventPublisher:应用事件。继承了接口ApplicationEventPublisher,从而在ApplicationContext上下文中引入了事件机制。这些事件和Bean的生命周期的结合为Bean的管理提供了便利。

总结区别:ApplicationContext与简单的BeanFactory相比,对它的使用是一种面向框架的使用风格(框架就是指的BeanFactory的框架体系)

ApplicationContext容器的设计原理

在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理。

因为----------------------ApplicationContext应用上下文的主要功能--------------AbstractXmlApplicationContext-----------实现

所以----------------------FileSystemXmlApplicationContext---------------只需要实现和它自身设计相关的两个功能。

1、如果应用直接使用FileSystemXMLApplicationContext--------实例化-------提供支持

解释:通过构造函数实例化FileSystemContext应用上下文,而构造函数中的refrsh()方法-------------------->IOC容器启动的一系列复杂操作--------------对于不同的容器实现,启动IOC容器的操作都是类似的。

2、怎样从文件系统中加载XML的Bean定义资源

解释:通过传入资源(xml)文件的路径,通过调用FileSystemResource的构造函数,得到资源,通过这个过程,可以为在文件系统中读取以XML形式存在的BeanDefinition做准备----------注意------------不同的上下文对应着不同的读取Beandefinition的方式。

上一篇下一篇

猜你喜欢

热点阅读