【个人技术经验及开发技巧分享】 【个人技术经验及开发技巧分享】
首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载

Louis

首页
  • 操作系统初识
  • JAVA基础
  • JVM
  • 开发框架
  • Redis
  • Zookeeper
  • 消息中间件
  • 持久化
  • 算法
  • 网络
  • 系统架构
  • 并发编程
  • 框架
  • 开发杂货
  • 线上排查
  • 技巧备忘
  • 部署指南
  • 版本管理
  • 工作流程
  • 发版流程
  • 友情链接
  • 网站备忘
  • 在线工具
  • 学习
  • 各种云
  • 应用下载
  • 并发编程

  • 框架

    • Spring
      • 1 核心流程
    • SpringBoot启动流程
    • Nacos注册中心
    • Nacos配置中心
  • 源码阅读
  • 框架
luoxiaofeng
2022-10-20
目录

Spring

# 1 核心流程

AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(TestConfig.class);
1
  public AnnotationConfigApplicationContext(Class<?>...componentClasses){
        this();

        register(componentClasses);

        refresh();
  }
1
2
3
4
5
6
7
1.调用构造函数 this();
主要做的事情:
1)初始化BeanFactory:this.beanFactory = new DefaultListableBeanFactory()
2)初始化BeanDefinition配置类读取器(AnnotatedBeanDefinitionReader)
和扫描器(ClassPathBeanDefinitionScanner scanner)(此处scanner没什么用处,用于外部手动调用。后续会重新new一个scanner去扫描bean定义)

初始化BeanDefinition配置类读取器的时候重点做了2件事
1)初始化ConfigurationClassPostProcessor后置处理器(父类为:BeanFactoryPostProcessor)
此时只是BeanDfinition,后续在refresh时根据BeanDefinition生成实例。
2)初始化其他内置相关BeanDefinition


2. register(componentClasses); 将传入的配置类进行注册,注册为BeanDefinition
   配置类有两种情况:
   1)带有@Configuration注解的配置类
   2)带有@Component,@ImportResouce,@Service,@ComponentScan等注解的配置类
- 在Spring内部把前者称为Full配置类,把后者称为Lite配置类


3.refresh(); IOC容器刷新接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

spring

ThreadPoolExecutor线程池
SpringBoot启动流程

← ThreadPoolExecutor线程池 SpringBoot启动流程→

最近更新
01
SpringBoot
10-21
02
Sentinel
10-14
03
ZAB协议
09-23
更多文章>
Copyright © 2022-2023 Louis | 粤ICP备2022060093号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式