BeanFactory和ApplicationContext接口
7.BeanFactory和ApplicationContext接口
| BeanFactory接口 | bean工厂, 提供getBean方法 |
|---|---|
| ApplicationContext子接口 | beanFactory的子接口,多一个refresh方法 |
AbstractApplicationContext 子实现类 内置类路径, 配置文件解析器, 存bean实例的singletonMap <String,Bean> |
内置类路径和解析器,重写refresh方法 refresh= 1.调用解析器的loadBeanDefinition 2.调用finishBeanInitialization(
) |
| ClassPathXmlApplicationContext子类 | 1.在构造函数调用refresh进行bean的实例化 注意这里的getBean方法会将实例化后的bean存放进singletonMap 于是下次我们调用这个方法的时候会refresh,然后map就装满了bean对象 重写getBean方法 1.查找singletonMap是否存有该Bean,有则返回 2.没有, 那么我们通过BeanDefinitionRegistry找到该BeanDefinition
3.BeanDefinition中保存了name, 因此我们通过反射newInstance
3.1 最重要的是进行依赖注入: properties
4.最后,走到这里说明singletonMap中没存该bean, 我们存入singletonMap,这样下次就不用再创建了,可以直接返回 5.注意这个方法是getBean, 到底是要返回Bean的!!!!!!!!!!! |



