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##学习路径#
全部评论
感谢参与【创作者计划2期·技术干货场】!欢迎更多牛油来写干货,瓜分总计20000元奖励!!技术干货场活动链接:https://www.nowcoder.com/link/czz2jsghtlq(参与奖马克杯将于每周五结算,敬请期待~)
点赞 回复
分享
发布于 2021-04-19 20:17
图裂了老板
点赞 回复
分享
发布于 2021-04-20 09:39
联想
校招火热招聘中
官网直投
总结的很好耶
点赞 回复
分享
发布于 2021-04-24 13:43
感谢分享,收藏了
点赞 回复
分享
发布于 2021-10-19 14:38
大佬,请问springboot有没有好点的推荐入门教程
点赞 回复
分享
发布于 2022-01-18 23:14

相关推荐

12 125 评论
分享
牛客网
牛客企业服务