1.beanFactory :容器调用无参构造器时,先调用父类的无参构造器:GenericApplicationContext,这个类定义了
DefaultListableBeanFactory并在无参构造器中初始化, beanFactory的作用:保存bean的定义信息
bean实例化之后保存在哪?
2.prepareBeanFactory(ConfigurableListableBeanFactory beanFactory)方法解析:
1-设置类加载器: beanFactory.setBeanClassLoader(getClassLoader());
2-设置bean表达式解析器(支持el表达式解析)
3-添加一些bean的后置处理器:
1、ApplicationContextAwareProcessor,它实现了BeanPostProcessor接口 ,它的作用是:bean初始化前, 调用invokeAwareInterfaces(bean),该方法运行流程,判断传入的bean是否是Aware类型,然后再判属 于哪种Aware(EnvironmentAware、EmbeddedValueResolverAware、ResourceLoaderAware、
ApplicationEventPublisherAware、MessageSourceAware、ApplicationContextAware),然后调用这个 bean 实现对应接口的方法:setxxx(xxx)
2、ApplicationListenerDetector
3、......
4-忽略一些自动装配的接口:ApplicationContextAwareProcessor里面判断的那些接口
5-注册可以解析的自动装配组件:可以在任何组件中自动注入
BeanFactory、ResourceLoader、ApplicationEventPublisher、ApplicationContext
6-给BeanFactory中注册一些能用的组件;
environment【ConfigurableEnvironment】、
systemProperties【Map<String, Object>】、
systemEnvironment【Map<String, Object>】
3.