1.new ClassPathXmlApplicationContext入口
2.构造方法,点进去
3.设置xml的指定文件,告诉系统去哪里读取xml文件
4.refresh的值恒等于true,进入refresh方法
5.准备工作:例如
5.1设置启动时间,设置容器关闭为false,设置容器容器为活跃true
5.2准备环境对象
5.3创建set集合
6.创建BeanFactory
6.1refreshBeanFactory刷新BeanFactory
6.1.1先判断有没有BeanFactory,如果有的话销毁BeanFactory,没有的话创建BeanFactory,第一次创建的BeanFactory名为DefaultListableBeanFactory
该方法loadBeanDefinitions(beanFactory)加载配置文件中bean定义信息并封装成BeanDefinition对象;
7.准备工作,给BeanFactory填充属性值
8.空方法,在需要的时候做功能扩展
9.调用BeanFactoryPostProcessors,可以对Bean标签定义的属性进行修改添加等
10.向BeanFactory注册BeanFactoryPostProcessors
11.做国际化处理
12.多播器,便于以后发布事件监听
13.注册监听器
14.实例化单例Bean队对象
14.1beanFactory.preInstantiateSingletons();该方法就是实例化所有单例,非懒汉加载的Bean对象
15发布相应事件
16销毁Bean以避免挂起资源
17重置活动标志