【Java SpringBoot基本问题】记录面试题宝典中自己不熟悉的SpringBoot问题
创始人
2025-05-31 16:05:17

文章目录

  • Spring Boot启动流程
  • Spring Boot自动装配

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,里面包含了不同版本的类
在这里插入图片描述

相关内容

热门资讯

Strategy增加现金储备并...   Michael Saylor的Strategy Inc.将其现金储备增至21.9亿美元,并在过去...
央行新政!借款人速看 中经记者 张漫游 北京报道12月22日,中国人民银行发布了《关于实施一次性信用修复政策有关安排的通知...
“连滚带爬”的年终总结,反而更... 又到岁末总结时。在不少总结鲜有直陈错误、难脱“成绩斐然,略有不足,来年改进”这一窠臼的背景下,笔者近...
大涨!特斯拉,新纪录!   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:证券时报)特...
土外长率团访叙,讨论经贸合作等... 转自:北京日报客户端当地时间22日,土耳其外长费丹率领代表团访问叙利亚首都大马士革,会见叙利亚政权领...