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