spring源码 简介
1 调用父类的构造方法 创建对象和属性的赋值操作
1 设置配置文件属性值(解析配置文件名称${})
---
1 设置启动容器时间
2设置活跃状态为true
3设置关闭状态为false
4获取env对象 加载当前系统属性值到env中(environment)
5准备监听器和事件集合对象 默认为空
---
1 判断容器中是否含有beanFactory对象 如果有 销毁并关闭
2 创建defultListAblebeanFactory
3 设置序列化id
4 定制化beanFactroy 设置相关属性 包括bean信息是否允许覆盖 和 循环依赖
5 加载bean定义信息
5.1 xmlBeanDefiniationReader 来解析xml 中bean信息文件
5.2 设置环境对象
5.3 设置资源加载器xmlClassPathApplicationContext
5.4设置实体类解析器

当我们在解析xml 文件中 往往头部会出现xsd格式引入路径,而当我们在没有网络的情况下
也能正常的解析xml 文件 这就是因为EntityResolver 这个接口的存在 beanDtdResolver 和 SchemaResolver 都实现了该接口 目的就是为接在没有网络情况下 加载本地的配置文件

标签上面的引用可以转换为本地的路径
5.5 初始化当前reader对象 是否对配置文件进行验证(适配器模式)
5.6 加载beanDefinition
5.6.1 以上都设置号了beanDefinitionReader 设置了处理器 环境对象 设置文件验证模式 接下来需要读取xml配置文件获取配置文件位置 进行解析 这里是判断 是以什么方式获取文件位置 因为之前我们在调用父类构造方法的时候 后面设置了配置文件的Locations 这里自然是第二个方法
这里传入的是以配置文件路径为数组为参数的loadBeanDefinitions
将字符串转换成Resource对象
Sting[]->Sting-Resource[]->resource
读取配置文件
解析