spring初始化(5.1.5.RELEASE)
2022-01-12 17:37:02 6 举报
AI智能生成
spring初始化(5.1.5.RELEASE)
作者其他创作
大纲/内容
相关模块
Resource
ClassPathResource
FileUrlResource
...
ResourceLoader
ApplicationContext
...
BeanDefinition
ScannedGenericBeanDefinition
AnnotatedGenericBeanDefinition
...
BeanDefinitionReader
XmlBeanDefinitionReader
PropertiedBeanDefinitionReader
...
BeanDefinitionRegistry
DefaultListableBeanFactory
AnnotationConfigApplicationContext(内部持有DefaultListableBeanFactory)
...
Enviroment
StandardEnvironment
StandardServletEnvironment
...
非web环境
注解启动
1. 触发入口
2. 初始化过程
1. 实例化AnnotationConfigApplicationContext对象
1 调用父类的父类AbstractApplicationContext的有参构造
1. 调用无参构造为resourcePatternResolver赋值
2. 如果构造方法中传入的parent不为空则合并父上下文环境
2. 执行父类GenericApplicationContext无参构造,实例化一个DefaultListableBeanFactory
3. 执行AnnotatedBeanDefinitionReader构造
1. 实例化ConditionEvaluator对象
2. 通过AnnotationConfigUtils工具类注册注解配置处理器
1. 为DefaultListableBeanFactory setDependencyComparator和setAutowireCandidateResolver
2. 往DefaultListableBeanFactory中添加处理器bean
4. 执行ClassPathBeanDefinitionScanner构造
1. 调用父类ClassPathScanningCandidateComponentProvider添加需要扫描的注解类型(Component)
2. 设置资源加载器
2. 执行包扫描,可参考springboot内嵌初始化#2.6.8.2.2
3. 注册配置类,可参考springboot内嵌初始化#2.6.8.2.1
4. 执行refresh,可参考springboot内嵌初始化#2.7,有些类似
3. 示例项目
xml启动
1. 触发入口
2. 初始化过程
2.1 ClassPathXmlApplicationContext和AnnotationConfigApplicationContext都继承自AbstractApplicationContext,所以会执行注解启动的#2.1.1步骤
2.2. 设置传入的配置文件,如有占位符则根据environment配置进行替换
2.3. 执行AbstractApplicationContext#refresh() 方法
3. 示例项目
web环境
注解启动
1. 触发入口
2. 初始化过程
示例项目
xml启动
1. 触发入口
2. 初始化过程(参考注解初始化过程,有些类似)
示例项目
springboot web环境容器初始化
外部容器
1. 触发入口
2. 初始化过程
3. 示例项目
内嵌容器
springboot内嵌初始化(2.1.3.RELEASE)
0 条评论
下一页