【Java SpringBoot基本问题】记录面试题宝典中自己不熟悉的SpringBoot问题

文章详细阐述了SpringBoot的启动流程,包括服务构建、环境准备、容器创建和填充容器的步骤。在自动装配部分,解释了Starter的概念以及如何通过META-INF/spring.factories进行条件配置。
摘要由CSDN通过智能技术生成

Spring Boot启动流程

1. 服务构建(构造器)

  • 设置primarySources:主方法类
  • 设置webType:SERVLET
  • 从Spring.factories获取初始化器
  • 从Spring.factories获取监听器ApplicationListener
  • 设置启动类:启动类

2. 环境准备(run)

  • 发布Spring启动事件listeners.starting()
  • 封装args参数 new DefaultApplicationArguments(args);
  • 配置环境并让环境生效prepareEnvironment() & configureIgnoreBeanInfo()
  • 打印Banner图printBanner(environment)

3. 容器创建(run)

  • 创建容器createApplicationContext()
  • 设置容器prepareContext()
  • 刷新容器refreshContext(),包括refresh()和注册钩子
  • afterRefresh()自定义接口
  • listener.started()
  • 执行Runners
  • listener.running()

4. 填充容器(就是容器创建的refreshContext().refresh())

  • prepareRefresh()刷新前操作,例如:清空缓存、初始化占位符
  • obtainFreshBeanFactory()创建BeanFactory
  • prepareBeanFactory(beanFactory)设置beanFactory.xxx属性
  • postProcessBeanFactory(beanFactory)注册与Servlet相关的特殊Bean,beanDefinition,beanFactory
  • invokeBeanFactoryPostProcessors(beanFactory)拓展接口,beanFactoryPostProcessor可以对bean的属性修改
  • registerBeanPostProcessors(beanFactory)对Bean实例的增强
  • initMessageSource()初始化信息源
  • initApplicationEventMulticaster()初始化Application事件发布器
  • onRefresh()初始化其他特殊bean
  • registerListeners()注册监听器
  • finishBeanFactoryInitialization(beanFactory)初始化剩下的Bean,例如用户自定义的Bean
  • finishRefresh()完成刷新,发布完成事件

Spring Boot自动装配

1. Spring Boot Starter
概念
Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。

举例来说,你打算把这个阅读列表应用程序做成一个Web应用程序。与其向项目的构建文件里添加一堆单独的库依赖,还不如声明这是一个Web应用程序来得简单。你只要添加Spring Boot的Web起步依赖就好了。

2. 自动装配
Maven引入的每个Jar都有META-IF/spring.factories,里面包含了不同版本的类
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值