本文参考:《紧急整理了 20 道 Spring Boot 面试题,我经常拿来面试别人!》
百度云:https://pan.baidu.com/s/17u1J-SOYYpbO-HMoMKJOLg
提取码:cd75
目录
- 1.什么是spring boot
- 2.spring boot优点
- 3.Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
- 4.Spring Boot 的配置文件有哪几种格式?它们有什么区别?
- 5.如何导入配置文件
- 6.Spring Boot 的核心注解
- 7、如何启用Spring Boot 特性
- 8、Spring Boot 需要独立的容器运行吗?
- 9、运行 Spring Boot 有哪几种方式?
- 10、Spring Boot 自动配置原理是什么?
- 11、Springboot读取配置文件的几种方式
- 12、你如何理解 Spring Boot 中的 Starters?
- 13、如何在 Spring Boot 启动的时候运行一些特定的代码?
- 14、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
- 15、SpringBoot 实现热部署有哪几种方式?
- 16.你如何理解 Spring Boot 配置加载顺序?
- 17、Spring Boot 如何定义多套不同环境配置?
- 18、Spring Boot 可以兼容老 Spring 项目吗,如何做?
1.什么是spring boot
Spring boot是spring开源组织下的一个子项目,是整个spring技术栈的一个大整合,简化了spring应用开发,省去了xml配置,开发者能快速上手。
2.spring boot优点
3.Spring Boot 的核心配置文件有哪几个?它们的区别是什么?
Spring Boot 的核心配置文件是 bootstrap 和 application 配置文件。
bootstrap 配置文件:可添加额外的配置属性。boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载,boostrap 里面的属性不能被覆盖。
application 配置文件主要用于 Spring Boot 项目的自动化配置,可用来修改默认配置。
4.Spring Boot 的配置文件有哪几种格式?它们有什么区别?
.properties 和 .yml,它们的区别主要是书写格式不同。
1).properties
2).yml
另外,.yml 格式不支持 @PropertySource 注解导入配置。
5.如何导入配置文件
@PropertySource&@ImportResource&@Bean
6.Spring Boot 的核心注解
启动类上面的注解是@SpringBootApplication,它也是 Spring Boot 的核心注解。主要组合包含了以下 3 个注解:
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,可以帮助 SpringBoot 应用将所有符合条件的 @Configuration 配置都加载到当前 IoC 容器之中,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
底层原理:
@ComponentScan:Spring组件扫描。
参照:https://www.jianshu.com/p/9dc7a385d19e
7、如何启用Spring Boot 特性
继承spring-boot-starter-parent项目。
这个项目又继承了spring‐boot‐dependencies项目,该项目管理springboot的所有依赖版本。
8、Spring Boot 需要独立的容器运行吗?
可以不需要,内置了 Tomcat/ Jetty 等容器。
9、运行 Spring Boot 有哪几种方式?
spring-boot的启动方式主要有三种:
- 运行带有main方法类
- 通过命令行 java -jar 的方式
- 通过spring-boot-maven-plugin的方式
10、Spring Boot 自动配置原理是什么?
Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个@configuration标注的Spring容器配置类,通过这个类与全局配置文件中对应的属性进行绑定的。
《Spring Boot自动配置原理、实战》
《Spring Boot面试杀手锏————自动配置原理》
11、Springboot读取配置文件的几种方式
12、你如何理解 Spring Boot 中的 Starters?
Starters可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想创建web项目,只要加入 spring-boot-starter-web 启动器依赖就能使用了。
13、如何在 Spring Boot 启动的时候运行一些特定的代码?
可以实现接口 ApplicationRunner 或者 CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个 run 方法。
参照:https://blog.csdn.net/zl1zl2zl3/article/details/83715818
14、Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot 支持 Java Util Logging, Log4j2, Logback 作为日志框架.。
Spring Boot 默认选用SLF4J(日志门面,即抽象层)和logback(日志实现)。
Spring 默认的是JCL(commons-logging)日志门面。它内部会有自己的算法去找日志门面的实现类,比如log4j,如果说没有引入其他日志依赖,它默认就会去找JDK自带的java.util.logging简称jul作为其日志实现类。
常见日志框架:
日志面面 | 日志实现 |
---|---|
JCL(Jakarta commons-logging)、SLF4J、jboss-logging | JUL(java.util.logging)、Log4j、log4j2、logback |
15、SpringBoot 实现热部署有哪几种方式?
前两种参考《Spring Boot 热部署三种方式》
最后一种Spring-boot-devtools方式参考《Spring Boot实现热部署》
16.你如何理解 Spring Boot 配置加载顺序?
优先级从高到低;
高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。
- 项目内部的主配置文件:application.properties/yml
- 外部配置文件:
命令行参数
系统环境变量
。。。
《SpringBoot - 配置文件加载位置与优先级》
17、Spring Boot 如何定义多套不同环境配置?
applcation.properties
application-dev.properties
application-test.properties
application-prod.properties
然后在applcation.properties文件中指定当前的环境spring.profiles.active=test,这时候读取的就是application-test.properties文件。
《Spring Boot Profile 不同环境配置》
18、Spring Boot 可以兼容老 Spring 项目吗,如何做?
可以兼容,使用 @ImportResource 注解导入老 Spring 项目配置文件。