Spring IOC 学习三 之 ApplicationContext容器面纱
来源:ystwo     阅读:587
源码超市
发布于 2019-03-26 00:49
查看主页

第一篇: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定义资源进行载入

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
一个隐藏在方法集和方法调用中且易被忽略的小细节
给Java程序员的Angular快速指南
Python破解YouTube视频推荐算法,深度解析原理,但还是看不懂!
【Azure 应用服务】App Service多个部署槽(Slot)之间,设置Traffic百分比后,如何来判断请求是由那一个槽(Slot)来进行处理呢?
运维常用的13类100个 Linux 基础命令
首页
搜索
订单
购物车
我的