AnnotationConfigApplicationContext启动原理
2022-08-23 17:37:35 0 举报
AI智能生成
AnnotationConfigApplicationContext启动原理
作者其他创作
大纲/内容
this()
初始化父类GenericApplicationContext中的无参构造;主要是为了功能更全面
this.beanFactory = new DefaultListableBeanFactory();
this.beanFactory = new DefaultListableBeanFactory();
初始化注解Bean定义读取器
this.reader = new AnnotatedBeanDefinitionReader(this)
this.reader = new AnnotatedBeanDefinitionReader(this)
注册内部Bean定义后置处理器到容器中
AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry)
AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry)
解析ConfigurationBean定义后置处理器到容器中
if (!registry.containsBeanDefinition(CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME))
if (!registry.containsBeanDefinition(CONFIGURATION_ANNOTATION_PROCESSOR_BEAN_NAME))
解析Autowired自动装配Bean定义到容器中
if (!registry.containsBeanDefinition(AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME))
if (!registry.containsBeanDefinition(AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME))
解析Required是否必要Bean定义到容器中
if (!registry.containsBeanDefinition(REQUIRED_ANNOTATION_PROCESSOR_BEAN_NAME)
if (!registry.containsBeanDefinition(REQUIRED_ANNOTATION_PROCESSOR_BEAN_NAME)
检查是否支持&解析JSR250规范@Resource注解Bean定义到容器中
if (jsr250Present && !registry.containsBeanDefinition(COMMON_ANNOTATION_PROCESSOR_BEAN_NAME))
if (jsr250Present && !registry.containsBeanDefinition(COMMON_ANNOTATION_PROCESSOR_BEAN_NAME))
检查是否支持JPA
if (jpaPresent && !registry.containsBeanDefinition(PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME))
if (jpaPresent && !registry.containsBeanDefinition(PERSISTENCE_ANNOTATION_PROCESSOR_BEAN_NAME))
解析事件传播器Bean定义到容器中
if (!registry.containsBeanDefinition(EVENT_LISTENER_PROCESSOR_BEAN_NAME))
if (!registry.containsBeanDefinition(EVENT_LISTENER_PROCESSOR_BEAN_NAME))
初始化ClassPathBean定义扫描器
this.scanner = new ClassPathBeanDefinitionScanner(this);
this.scanner = new ClassPathBeanDefinitionScanner(this);
默认进行注册拦截器(useDefaultFilters=true)
为@Componet注册默认过滤器,这将隐式注册@Controller、@Service、@Repository注解
registerDefaultFilters()
为@Componet注册默认过滤器,这将隐式注册@Controller、@Service、@Repository注解
registerDefaultFilters()
register(annotatedClasses)
将配置文件类注册到容器中
检查配置类是否为Priamy或者Lazy
检查配置类是否为Priamy或者Lazy
refresh()
初始化多播器
initApplicationEventMulticaster()
initApplicationEventMulticaster()
将早期事件进行广播(晚期事件是初始化多播器后)
registerListeners()
registerListeners()
0 条评论
下一页