spring初始化(5.1.5.RELEASE)
2022-01-12 17:37:02 6 举报
AI智能生成
登录查看完整内容
spring初始化(5.1.5.RELEASE)
作者其他创作
大纲/内容
spring容器初始化(5.1.5.RELEASE)
相关模块
Resource
spring Resource模块类关系图
ClassPathResource
FileUrlResource
...
ResourceLoader
ApplicationContext
BeanDefinition
ScannedGenericBeanDefinition
AnnotatedGenericBeanDefinition
BeanDefinitionReader
XmlBeanDefinitionReader
PropertiedBeanDefinitionReader
BeanDefinitionRegistry
DefaultListableBeanFactory
AnnotationConfigApplicationContext(内部持有DefaultListableBeanFactory)
Enviroment
spring环境相关类图
StandardEnvironment
StandardServletEnvironment
非web环境
注解启动
AnnotationConfigApplicationContext类图
1. 触发入口
2. 初始化过程
1. 实例化AnnotationConfigApplicationContext对象
1 调用父类的父类AbstractApplicationContext的有参构造
1. 调用无参构造为resourcePatternResolver赋值
2. 如果构造方法中传入的parent不为空则合并父上下文环境
2. 执行父类GenericApplicationContext无参构造,实例化一个DefaultListableBeanFactory
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启动
ClassPathXmlApplicationContext类图
2.1 ClassPathXmlApplicationContext和AnnotationConfigApplicationContext都继承自AbstractApplicationContext,所以会执行注解启动的#2.1.1步骤
2.2. 设置传入的配置文件,如有占位符则根据environment配置进行替换
2.3. 执行AbstractApplicationContext#refresh() 方法
web环境
1. 触发入口
2. 初始化过程
spring mvc 初始化过程
示例项目
2. 初始化过程(参考注解初始化过程,有些类似)
springboot web环境容器初始化
外部容器
内嵌容器
springboot内嵌初始化(2.1.3.RELEASE)
0 条评论
回复 删除
下一页