Spring Boot相关面试题
-
什么是SpringBoot
- Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
-
如何统一引入SpringBoot版本
- 继承
spring-boot-starter-parent
项目-
<parent> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version> </parent>
-
- 导入spring-boot-dependencies项目依赖
<dependencyManagement>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.6.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement>
- 继承
-
SpringBoot优点
- 独立运行。
- 简化配置。
- 自动配置。
- 无代码生成和xml配置。
- 应用监控
-
SpringBoot的核心配置文件
- Spring Boot的核心配置文件是 application 和 bootstrap 配置文件。
- application:主要用于 Spring Boot 项目的自动化配置。
- bootstrap: Spring Cloud 新增的启动配置文件,需要引入
spring-cloud-context
依赖后,才会进行加载。
- Spring Boot的配置文件格式。
- .properties:user.name=admin
- .yml:(.yml 格式不支持 @PropertySource 注解导入配置。)
user: name: admin
- Spring Boot同时存在properties和yml的时,那个优先级高?
- properties文件的优先级要高于yml。
- Spring Boot的核心配置文件是 application 和 bootstrap 配置文件。
-
SpringBoot的核心注解
- 启动上的注解是@SpringBootApplication,是SpringBoot的核心注解。包含了以下注解:
- @SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
- @EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
- @ComponentScan:Spring组件扫描。
-
SpringBoot的自动配置
- Springboot启动的时候,寻找依赖的包,然后找到META-INF/spring.factories文件中包含的jar包。
- 根据spring.factories配置加载AutoConfigure 类。
- 根据
@Conditional
等条件注解 的条件,进行自动配置并将 Bean 注入 Spring IoC 中。
-
SpringBoot读取配置文件的方式
- 使用@Value注解。
@Value("${user.name}") private String name;
- 使用@ConfigurationProperties注解,(注解在类上)
@ConfigurationProperties(prefix="user") public class User { private String name; private String sex; public void setName(String name) { this.name = name; } public String getName() { return name; }
public void setSex(String sex) {
this.sex = sex;
}
public String getSex() {
return sex;
} }
- 使用@Value注解。
-
SpringBoot的热部署
- Spring-boot-devtools。
- Spring Loaded 插件,Spring Boot 2.X 后,官方宣布不再支持 Spring Loaded 插件 的更新
- JRebel 插件,需要付费。
-
SpringBoot容器
- 内置tomcat和jetty容器。
- 默认是tomcat。
- 切换容器为jetty
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <!-- 去除 Tomcat --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <!-- 引入 Jetty --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
- 切换容器为jetty
-
SpringBoot支持的日志框架
- Logback(默认)
- Log4j2
- Log4j
- Java Util Logging