SpringBoot学习第一天:核心概念+面试考点+Bean生命周期详解
SpringBoot学习第一天:核心概念+面试考点+Bean生命周期详解
大家好,今天开启SpringBoot系列学习的第一天,也是入门最关键的一天。本文将围绕3个核心问题展开,不仅覆盖基础知识点,更融入面试高频考点、易错点,补充Bean生命周期结构图,适合零基础入门,也适合备考面试的同学查漏补缺,内容可直接复制发布到博客园,后续将持续更新系列学习内容~
一、什么是SpringBoot(基础+面试拓展)
首先明确核心定义:SpringBoot是基于Spring框架的快速开发脚手架,由Pivotal团队(后被VMware收购)研发,于2014年首次发布,核心目标是“简化Spring应用开发,快速构建生产级可用的应用”。
很多面试会问:“SpringBoot和Spring的区别是什么?”——这里重点记:SpringBoot不是新框架,而是Spring的“封装与加速工具”,它解决了Spring框架开发中“配置繁琐、依赖管理复杂、部署麻烦”的痛点,相当于给Spring套了一层“便捷外壳”,让开发者无需关注底层配置,专注业务逻辑开发。
1. 核心特性(面试高频考点)
-
约定大于配置(Convention Over Configuration):这是SpringBoot的核心思想,默认提供一套合理的配置(无需XML配置),覆盖90%以上的开发场景,开发者只需在特殊场景下修改配置,大大减少配置工作量。
面试延伸:“约定大于配置的优势是什么?”——减少配置冗余、降低学习成本、提升开发效率、避免配置冲突。 -
自动配置(AutoConfiguration):SpringBoot启动时,会根据项目中引入的依赖,自动装配Spring容器中的Bean,无需手动配置。
面试延伸:“自动配置的核心原理是什么?”(入门阶段先记结论,后续详解):@EnableAutoConfiguration注解触发自动配置,通过SpringFactoriesLoader加载META-INF/spring.factories中的配置类,根据条件注解(@Conditional)判断是否需要实例化Bean。 -
内嵌容器:内置Tomcat(默认)、Jetty、Undertow等Web容器,无需额外部署容器,直接将项目打成Jar包,通过java -jar命令即可运行,简化部署流程。
-
Starter场景启动器:一站式依赖管理,比如引入spring-boot-starter-web,就会自动导入Web开发所需的所有依赖(SpringMVC、Tomcat、Jackson等),杜绝手动导入依赖导致的版本冲突问题。
面试延伸:“常用的Starter有哪些?”——spring-boot-starter-web(Web开发)、spring-boot-starter-jdbc(数据库访问)、spring-boot-starter-data-jpa(ORM框架)、spring-boot-starter-test(单元测试)。 -
Actuator监控:开箱即用的应用监控功能,可查看应用健康状态、内存使用、请求链路等,方便生产环境排查问题。
2. 核心定位(面试必背)
- 微服务架构的基础框架(SpringCloud依赖SpringBoot实现);
- Spring生态的快速入口(入门Spring生态,先学SpringBoot);
- 企业级Java开发的主流选择(目前绝大多数Java后端项目采用SpringBoot开发)。
3. 面试易错点提醒
易错点1:SpringBoot是框架?错!SpringBoot是脚手架(工具),核心还是Spring框架。
易错点2:SpringBoot无需配置?错!是“默认零配置”,特殊场景(如数据库配置、端口配置)仍需手动修改application.yml/properties。
二、SpringBoot什么时候加载依赖(基础+面试细节)
SpringBoot的依赖加载并非“一次性加载”,而是分为构建期加载和运行期加载两个阶段,这是面试中常考的细节题,很多新手容易混淆两个阶段的作用。
1. 构建阶段(基于Maven/Gradle,项目编译打包时)
这个阶段的核心是“下载依赖、导入依赖、打包依赖”,与SpringBoot本身无关,是构建工具(Maven/Gradle)的作用。
-
依赖下载:当我们在pom.xml(Maven)中引入Starter或其他依赖后,点击“刷新项目”、执行mvn clean compile(编译)、mvn package(打包)命令时,Maven会从中央仓库下载对应的依赖包(.jar文件),存入本地仓库。
-
依赖导入:编译阶段,Maven会将下载好的依赖包,加入项目的classpath(类路径),让项目能够识别依赖中的类和方法。
-
依赖打包:执行打包命令时,Maven会将项目代码和所有依赖包,打成一个“胖Jar包”(FatJar),这个Jar包包含了应用运行所需的所有依赖,后续运行时无需额外引入依赖。
2. 运行阶段(应用启动时,SpringBoot核心作用)
当我们执行java -jar 项目.jar启动应用时,SpringBoot会触发依赖的加载和生效,具体流程如下(面试可直接背诵):
-
执行SpringApplication.run()方法,启动SpringBoot应用;
-
加载项目中的配置文件(application.yml/properties、bootstrap.yml等);
-
扫描classpath下所有依赖包,识别依赖中的Bean定义、自动配置类;
-
@EnableAutoConfiguration注解触发自动配置,根据依赖类型,实例化对应的Bean;
-
完成Bean的依赖注入,确保所有依赖的Bean都能正常使用;
-
应用启动完成,依赖正式生效,支持业务逻辑运行。
3. 面试总结(一句话记牢)
- 依赖下载:构建期(刷新、编译、打包时);
- 依赖载入JVM:运行期(应用启动时);
- 依赖生效:运行期(容器初始化、自动配置完成后)。
4. 面试延伸题
问:“SpringBoot启动时,如何排除某个不需要的自动配置类?”
答:使用@SpringBootApplication注解的exclude属性,例如:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}),排除数据库自动配置(适用于不需要数据库的项目)。
三、SpringBoot Bean生命周期(重点+面试高频+结构图)
SpringBoot的Bean生命周期,完全沿用Spring的Bean生命周期,核心分为5个阶段,是面试重中之重(几乎所有Java后端面试都会考),下面结合流程图、细节、面试考点详细讲解。
1. Bean生命周期完整结构图(面试画图题必备)
运行结果(按生命周期顺序输出):
1. Bean实例化:调用无参构造方法
2. Bean属性赋值:username = test
3. 执行Aware接口:BeanName = userBean
4. 执行@PostConstruct:Bean初始化
5. 执行afterPropertiesSet:Bean初始化完成
6. Bean使用阶段:username = test
7. 执行@PreDestroy:Bean准备销毁
第一天学习总结(面试速记版)
-
SpringBoot:Spring的快速开发脚手架,核心是约定大于配置、自动配置,简化开发和部署。
-
依赖加载:构建期下载、导入、打包;运行期加载、生效,核心是自动配置触发依赖实例化。
-
Bean生命周期(必背):实例化 → 属性赋值 → 初始化(Aware→@PostConstruct→afterPropertiesSet) → 使用 → 销毁(@PreDestroy→destroy)。
✅ 本文为SpringBoot学习系列第一篇,后续将持续更新:自动配置原理、启动流程、Web开发、数据访问、异常处理等核心知识点,兼顾基础和面试,欢迎关注后续更新~
这里我准备了这个图以及自动装配的原理,同时这个图一定是要背住的,很多面试都会问,同时明天的话我会结合项目进行讲解原理,以及我们以实现一个增删改查为案例,能够更直观的看到流程

如果觉得内容有帮助,记得点赞、收藏,一起打卡SpringBoot学习!
(注:文档部分内容可能由 AI 生成)

浙公网安备 33010602011771号