SpringBoot的常见知识点汇总

1.什么是Spring Boot?

Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。

2.SpringBoot的优点?

  • 独立运行 Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。
  • 简化配置 spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。
  • 自动配置 Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。
  • 无代码生成和XML配置 Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。
  • 应用监控 Spring Boot提供一系列端点可以监控服务及应用,做健康检测。

3.SpringBoot的缺点?

Spring Boot虽然上手很容易,但如果你不了解其核心技术及流程,所以一旦遇到问题就很棘手,而且现在的解决方案也不是很多,需要一个完善的过程。

4.Spring Boot 的核心注解是哪个?它主要由哪几个注解组成的?

启动类上面的注解是@SpringBootApplication,它也是Spring Boot的核心注解,主要组合包含了以下3个注解:
@SpringBootConfiguration:组合了@Configuration注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项。
@ComponentScan:启动组件扫描,这样你写的Web控制器类和其他组件才能被自动发现并注册为Spring应用程序上下文里的Bean。

5.Spring Boot 的核心配置文件有哪几个?它们的区别是什么?

Spring Boot有两种类型的配置文件,application和bootstrap文件。
区别:
application配置文件是应用级别的,是当前应用的配置文件。
bootstrap配置文件是系统级别的,用来加载外部配置,如配置中心的配置信息,也可以用来定义系统不会变化的属性。bootstatp文件的加载先于application文件。

6.Spring Boot 的配置文件有哪几种格式?它们有什么区别?

properties或者yml格式。
区别是书写格式不同,*.properties文件是key=value的形式; *.yml是key: value的形式,.yml 格式不支持 @PropertySource 注解导入配置。

7、运行 Spring Boot 有哪几种方式?

1)打包用命令或者放到容器中运行
2)用 Maven/ Gradle 插件运行
3)直接执行 main 方法运行

8.Spring Boot 自动配置原理是什么?

(1)SpringBoot启动时加载主配置类@SpringBootApplication,开启了自动配置功能@EnableAutoConfiguration;
(2)最重要的就是 @Import注解,其中的 AutoConfigurationImportSelector 类的作用就是往 IOC容器中导入组件。
(3)这个类的selectImports()方法,SpringFactoriesLoader.loadFactoryNames()从类路径得到资源,扫描所有jar包类路径下的MEAT-INF/spring.factories文件,把扫描到的这些文件的内容包装成factories对象,从factories中获得EnableAutoConfiguration.class类对应的值,然后把他们添加到容器中。
启动类上面的注解是@SpringBootApplication
进入 @SpringBootApplication 的源码可以看到@EnableAutoConfiguration开启自动配置功能
再进入 @EnableAutoConfiguration 源码
最重要的就是 @Import注解,其中的 AutoConfigurationImportSelector 类的作用就是往 IOC容器中导入组件。这个类中有一个方法是SpringFactoriesLoader.loadFactoryNames(),这个方法扫描具有MEAT-INF/spring.factories文件的jar包。
来到Springboot的jar包中META-INF下的spring.factories文件中看到很多自动配置类(xxxAutoConfiguration类),SpringBoot会根据这些自动配置类去自动配置环境
找到配置所有EnableAutoConfiguration的值加入到Spring容器中,所以说容器中最终会添加很多的类。
里面的类都是自动配置类,SpringBoot会根据这些自动配置类去自动配置环境。
每一个都是容器中的一个组件,并都加入到容器中。加入到容器中之后的作用就是用它们来做自动配置,这就是自动配置的开始,只有这些自动配置类进入到容器中以后,接下来这个自动配置类才开始进行启动。
所有在配置文件中能配置的属性都是在***Properties类中封装着,配置文件能配置什么就可以参照某个功能对应的这个属性类,它会根据不同的条件判断,来决定配置类是否生效,一旦配置生效,这个配置类就会给容器中添加组件。
(我们在配置的时候按照这个类中的要求对应配置,如果所有配置成功了,就往容器中添加组件,给容器中自动配置类添加组件的时候,会从properties类中获取某些属性,我们可以在配置文件指定这些属性的值。)
ThymeleafProperties.java

9.Spring Boot 配置加载顺序

(1)properties文件;(2)YAML文件;(3)系统环境变量;(4)命令行参数;

10.SpringBoot 实现热部署

引用devtools依赖:
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 <optional>true</optional>
</dependency>

11.Spring Boot 可以兼容老 Spring 项目吗,如何做?
可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。

12.Spring Boot Starters启动器

Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成Spring及其他技术,而不需要到处找示例代码和依赖包。如你想使用Spring JPA访问数据库,只要加入spring-boot-starter-data-jpa启动器依赖就能使用了。
Starters包含了许多项目中需要用到的依赖,它们能快速持续的运行,都是一系列得到支持的管理传递性依赖。
#Spring##学习路径#
全部评论
大佬,请问springboot有没有好点的推荐入门教程
点赞 回复 分享
发布于 2022-01-18 23:14
感谢分享,收藏了
点赞 回复 分享
发布于 2021-10-19 14:38
总结的很好耶
点赞 回复 分享
发布于 2021-04-24 13:43
图裂了老板
点赞 回复 分享
发布于 2021-04-20 09:39
感谢参与【创作者计划2期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz2jsghtlq(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复 分享
发布于 2021-04-19 20:17

相关推荐

2025-12-05 18:09
已编辑
广东药科大学 后端工程师
点赞 评论 收藏
分享
昨天 11:18
门头沟学院 Java
作者先叠个甲:本人双非本,秋招拿到了多个大厂offer,这个过程也不容易,但是在看到很多秋招胜利之后说自己一路有多艰辛的文章,总感觉有一点不对劲,想了很久打算写一篇文章分析一下,本文仅代表作者观点,不认同的可以在评论区大家一起理性讨论。&nbsp;秋招已经结束,各类社交平台出现一大批“大厂上岸”胜利结算。文章的叙事逻辑高度相同,开篇就渲染焦虑和困惑,学习时的挑灯夜读、投递时的屡屡碰壁、面试时的如履薄冰,将过往经历包装成一步艰辛的“奋斗史”,然后最终以大厂offer的胜利结尾,字里行间全是苦尽甘来的优越感。但是在我看来,这类文章的本质是结果导向的、带有浮夸的叙事,因为其内核不是分享经验,而是借“苦难”之名...
创作小队长:你的批判视角非常犀利,尤其“结果决定叙事权”的洞察非常精准,哈哈想邀请你来成为我们的创作者🫰 但我想补充一个视角:许多分享者的初衷并非炫耀结果或者苦难,我更愿意相信他们在这个过程中付出了很多,在这场战役结束后,他们迫不及待地想被看到,记录和分享都是给自己的一个交代,而非真的教会别人什么,他们的初衷未必是想制造焦虑。求职市场的残酷、经济环境的下行、世俗价值观才是这种叙事流行的土壤,作为一个普通人无法抵抗洪流。 感谢你发起这场讨论。理想的社区,既需要这样锐利的批判来保持清醒,你的洞察非常犀利,也许会启发一些人,能逐渐改变这种叙事~
点赞 评论 收藏
分享
评论
12
125
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务