2021 最新 SpringBoot 面试题【40题】

本文整理了40道关于SpringBoot的面试题,涵盖SpringBoot基础、配置、安全性和进阶知识。内容包括SpringBoot的优点、自动配置原理、配置加载顺序、运行方式、安全性实现、配置文件类型、跨域问题处理、CSRF攻击、微服务监控、WebSockets、Spring Data、Spring Batch、接口文档维护、热部署、Starter作用等,帮助读者深入理解SpringBoot的核心概念和技术要点。
摘要由CSDN通过智能技术生成

最近梳理汇总了 Java 面试常遇到的面试题,包含了 Java基础、并发、JVM、数据库、Spring、SpringMVC、SpringBoot、SpringCloud、设计模式、MQ、Linux、Docker等多个类型。

今天这篇是关于 SpringBoot,总结了 40 道经典问题。

1. SpringBoot基础

1.1 什么是SpringBoot?

  • 用来简化Spring应用的初始搭建以及开发过程,使用特定的方式来进行配置
  • 创建独立的Spring引用程序main方法运行
  • 嵌入的tomcat无需部署war文件
  • 简化maven配置
  • 自动配置Spring添加对应的功能starter自动化配置
SpringBoot来简化Spring应用开发,约定大于配置,去繁化简

1.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 的核心功能之一。
  • 避免大量的Maven导入和各种版本冲突
  • 应用监控
    Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。

1.3 SpringBoot的核心注解是什么?由那些注解组成?

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
      @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
      @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
  

主要组合包含了以下 3 个注解:

  • @SpringBootConfiguration
    组合了 @Configuration 注解,实现配置文件的功能。
  • @EnableAutoConfiguration
    打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
  • @ComponentScan
    Spring组件扫描。

1.4 什么是JavaConfig?

Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:

  • 面向对象的配置
    由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它的@Bean 方法等。
  • 减少或消除 XML 配置
    基于依赖注入原则的外化配置的好处已被证明。但是,许多开发人员不希望在 XML 和 Java 之间来回切换。JavaConfig 为开发人员提供了一种纯 Java 方法来配置与 XML 配置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 配置类来配置容器是可行的,但实际上很多人认为将JavaConfig 与 XML 混合匹配是理想的。
  • 类型安全和重构友好
    JavaConfig 提供了一种类型安全的方法来配置 Spring容器。由于 Java 5.0 对泛型的支持,现在可以按类型而不是按名称检索 bean,不需要任何强制转换或基于字符串的查找。

1.5 SpringBoot自动配置原理是什么?

  1. SpringBoot启动会加载大量的自动配置类
  2. 我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
  3. 我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
  4. 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;
    xxxxAutoConfigurartion:自动配置类;给容器中添加组件

xxxxProperties:封装配置文件中相关属性;

1.6 你如何理解SpringBoot配置加载顺序?

1. 开发者工具 `Devtools` 全局配置参数;

2. 单元测试上的 `@TestPropertySource` 注解指定的参数;

3. 单元测试上的 `@SpringBootTest` 注解指定的参数;

4. 命令行指定的参数,如 `java -jar springboot.jar --name="码霸霸"`;

5. 命令行中的 `SPRING_APPLICATION_JSONJSON` 指定参数, 如 `java -Dspring.application.json='{"name":"码霸霸"}' -jar springboot.jar`;

6. `ServletCon
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值