Spring IOC 学习三 之 ApplicationContext容器面纱
第一篇:Spring IOC学习一
第二篇:Spring IOC学习二 之资源加载
有第一篇已经知道整个Spring IOC的最核心体系就是 ApplicationContext 本文就对这个体系进行学习一下。第一篇就说了ApplicationContext是Spring真正的高级容器。它比BeanFactory高级在哪里?
1、继承了MessageSource 提供了国际化标准访问策略
2、继承了ApplicationEventPublisher 提供了强大的事件机制
3、扩展了ResourceLoader接口,使其能批量加载资源配置
4、支持web应用
重新补一下图
由上图即可以明了的看到整个ApplicationContext 的大致体系结构
ApplicationContext 的两个直接子类:
1、WebApplicationContext
该 接口的唯一方法就是为了给servlet 提供上下文接口
2、ConfigurableApplicationContext
以上是主要的方法
ConfigurableApplicationContext?不仅仅继承了ApplicationContext 同时还有 Lifecycle和 Closeable。这两个接口的作用是什么?
1、Lifecycle 包含了是三个方法:stop,start ,isRunning 这是Spring 容器提供的对生命周期的管理,
2、Closeable 进去看就会发现就一个方法,close 这是JDK提供的一个接口,用于关闭组件释放资源用的。
WebApplicationContext 和 ConfigurableApplicationContext 从接口接口上就会发现他们有共同的子类ConfigurableWebApplicationContext
ClassPathXmlApplicationContext 是我们最常见的Spring IOC容器。这个类是整个IOC容器的最终实现类之一,它包含了1个方法和多个构造方法,除了一个无参的构造方法外,一个ApplicationContext 参数的构造方法外,其他所有的有参构造法最终都会执行一下2个方法的一种
第一种
第二种
第一种是手动控制能否刷新容器,第二种是每次都刷新
第一种是根据资源位置数组 最终在父类AbstractRefreshableConfigApplicationContext中实现bean资源的定位,第二种是跟自己资源位置相对或者绝对路径数组,基于给定资源加载资源的类 实例化ClassPathResource对象。
首先 super(parent) 最终是调用父类的构造方法,为容器设置好Bean资源的加载器,如下代码
PathMatchingResourcePatternResolver是创立可批量加载资源的超级接口
setConfigLocations 方法,有单字符串形式和数组形式两种。ClassPathXMLApplicationContext是后者,FileSystemXMLApplicationContext是用的第一种
接下来就是refresh()方法,该方法最终也是要再父类中实现下面就是整个方法的说明
refresh()方法的作用是:在创立IoC容器前,假如已经有容器存在,则需要把已有的容器销毁和关闭,以保证在refresh之后使用的是新建立起来的IoC容器。refresh的作用相似于对IoC容器的重启,在新建立好的容器中对容器进行初始化,对Bean定义资源进行载入
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Spring IOC 学习三 之 ApplicationContext容器面纱