SpringBoot自动配置原理、启动流程、IOC容器初始化流程

自动配置原理:

在boot程序启动后,起步依赖中的一些bean会自动注入ioc容器中

引入web依赖后,Springboot会自动注入dispatcherServlet对象

答:在主启动类上添加了SpringBootApplication注解,这个注解组合了EnableAutoConfiguration注解,EnableAutoConfiguration注解又组合了Import注解,导入了AutoConfigurationImportSelector类,实现selectImports方法,这个方法经过层层调用,最后会读取META—INF目录下的 后缀名为imorts的文件,当然了,boot2.7以前的版本,读取的是spring.factories文件,读取到全类名了之后,会解析注册条件,也就是@Conditional及其衍生注解,把满足注册条件的Bean对象自动注入到IOC容器中

SpringBoot启动流程

  • new SpringApplication()
    • 1.确认web应用的类型
    • 2. 加载ApplicationContextInitializer(初始化器)
    • 3. 加载ApplicationListener(监听器)
    • 4. 记录主启动类
  • run()
    • 1.准备环境对象Environment,用于加载系统属性等等
    • 2. 打印Banner(控制台显示的Spring)
    • 3.实例化容器Context
    • 4.准备容器(因为容器要初始化bean并管理),为容器设置Environment、BeanFactoryPostProcessor(bean工程的后置处理器),并加载主类对应的BeanDefinition
    • 5.刷新容器(为容器创建所有Bean实例)
    • 6.返回容器

IOC容器初始化流程

  • AbstractApplicationContext.refresh ()
    • 1. 准备BeanFactory (DefaultListableBeanFactory)
      • 设置ClassLoader(类加载器)
      • 设置Environment(为bean工厂设置实例化需要的属性)
    • 2.扫描要放入容器中的Bean,得到对应的BeaDefinition(只扫描,并不创建)
    • 3. 注册BeanPostProcessor
    • 4. 处理国际化
    • 5. 初始化事件多播器ApplicationEventMulticaster
    • 6.启动tomcat
    • 7. 绑定事件监听器和事件多播器
    • 8. 实例化非懒加载的单例Bean
    • 9. 扫尾工作,比如清空实例化时占用的缓存等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值