spring-ioc加载流程
2021-09-03 15:19:04 10 举报
spring-ioc加载流程
作者其他创作
大纲/内容
创建早期事件监听器对象
注册所有监听器到多波器中
prepareRefresh()准备刷新上下文环境
主要注入对@AutoWired,配置类,@Required,JPA,事件监听处理器等
处理实现Ordered接口的类
发布ContextRefreshedEvent
早期事件是指事件事件监听器还没有注册到多波器是的事件
处理实现PriorityOrdered的处理器,按照Ordered接口排序
添加一下spring提供的bean,接口的实现类等
把事件监听器注册到多播器上 registerListeners()
添加默认的过滤器用来扫描我们classpath下的标注了@Componentr的对象,以及JSR250,JSR330规范
实例化我们的单实例bean. finishBeanFactoryInitialization(beanFactory)
忽略一下spring的Aware接口
处理自己添加的处理器
注册所有实现BeanPostProcessor接口的处理器
处理实现了priorityOrdered接口的处理器
最后容器刷新 finishRefresh()
prepareBeanFactory(beanFactory);对bean工厂进行填充属性
初始化国际化资源处理器.\t\t\t\tinitMessageSource()
主要关心ConfigurationClassPostProcessor处理配置类
初始化@Conditional 处理器ConditionEvaluator
AbstractApplicationContext#refreshspring容器启动核心流程
注册一些配置的后置处理器
obtainFreshBeanFactory()通过子类实现获取bean工厂
扩展方法,目前springBoot启动Tomcat
获取或创建多波器默认为SimpleApplicationEventMulticaster
AnnotatedBeanDefinitionReader
创建
doScan
调用我们的bean工厂的后置处理器.\t\t\t\tinvokeBeanFactoryPostProcessors(beanFactory)
scan(String... basePackages)扫描bean定义
registerDefaultFilters
AnnotationConfigApplicationContext
BeanDefinitionRegistryPostProcessor
先创建实现LoadTimeWeaverAware接口的bean处理关于aspectj等代理
注册ApplicationContextAwareProcessor处理各种Aware接口
校验容器必须依赖的环境变量的值
创建事件多播器\t\t\t\tinitApplicationEventMulticaster()
实例化剩余的所有单例bean
注册bean的后置处理器 registerBeanPostProcessors(beanFactory)
注册ApplicationListenerDetector Bean后置处理器添加所有ApplicationListener
冻结所有Bean定义
发送所有早期事件
onRefresh()
剩下的所有bean后置处理器
调用SmartInitializingSingleton接口
ClassPathBeanDefinitionScannerbean定义扫描
0 条评论
回复 删除
下一页