AnnotationConfigApplicationContext
说明:入参传入一个@Configuration标示类,内部定义几个@Bean
- 注册Bean配置类(入参类)
- 刷新上下文
AnnotationConfigApplicationContext#refresh流程
注解区别于ClassPath在于加载的方式不同:
-
XML方式,在实例化容器阶段,读取配置,注册为BeanDefinition
-
Annotation方式,在BeanFactory后置处理器调用阶段,通过
ConfigurationClassPostProcessor#processConfigBeanDefinitions
,根据注册的Bean配置类,扫描- 从BeanDefinition种解析Configuration.class,获取对应注解类
- parse上面的类,处理下面注解
- Component, PropertySources, ComponentScan, Import, ImportResource
- Bean
- load BeanDefinition
最后,注册Bean后置处理器、初始化MessageSource等,然后实例化,完成refresh