本篇整理了 2021 年常见的 SpringBoot 面试题,并结合实际应用场景进行了解答,帮助读者更好地理解和掌握 SpringBoot 相关知识。

1. 什么是 SpringBoot?它与 Spring Framework 有什么区别?

SpringBoot 是一个基于 Spring Framework 的快速开发框架,它简化了 Spring 应用的搭建和开发过程。与 Spring Framework 相比,SpringBoot 具有以下优势:

  • 自动配置:SpringBoot 可以根据项目依赖自动配置应用程序,减少了大量的 XML 配置。
  • 起步依赖:SpringBoot 提供了一系列常用的起步依赖,可以方便地引入所需的依赖库。
  • 内嵌服务器:SpringBoot 内嵌了 Tomcat、Jetty 等服务器,可以直接运行应用程序,无需额外配置。
  • 监控和管理:SpringBoot 提供了 Actuator 模块,可以方便地监控和管理应用程序。

2. SpringBoot 的核心注解是什么?

SpringBoot 的核心注解是 @SpringBootApplication,它是一个组合注解,包含了 @Configuration@EnableAutoConfiguration@ComponentScan 三个注解。

  • @Configuration:表示该类是一个配置类。
  • @EnableAutoConfiguration:开启自动配置功能。
  • @ComponentScan:扫描指定包下的组件。

3. 如何自定义 SpringBoot 的自动配置?

可以通过以下方式自定义 SpringBoot 的自动配置:

  • 使用 @Conditional 注解:根据条件决定是否加载配置类。
  • 使用 @ImportAutoConfiguration 注解:导入指定的自动配置类。
  • 创建 META-INF/spring.factories 文件:定义自动配置类。

4. SpringBoot 如何实现事务管理?

SpringBoot 使用 @Transactional 注解实现声明式事务管理。

5. SpringBoot 常用的 starter 有哪些?

  • spring-boot-starter-web:用于构建 Web 应用程序。
  • spring-boot-starter-data-jpa:用于访问数据库。
  • spring-boot-starter-test:用于单元测试。
  • spring-boot-starter-security:用于安全控制。
  • spring-boot-starter-actuator:用于监控和管理应用程序。

6. 如何测试 SpringBoot 应用程序?

可以使用 Spring Test 和 JUnit 测试 SpringBoot 应用程序。

7. 如何部署 SpringBoot 应用程序?

可以将 SpringBoot 应用程序打包成 jar 包或 war 包,然后部署到服务器上。

8. SpringBoot 的优点和缺点是什么?

优点:

  • 简化开发:自动配置、起步依赖等特性简化了开发过程。
  • 易于部署:内嵌服务器,可以直接运行应用程序。
  • 易于监控:Actuator 模块提供了丰富的监控指标。

缺点:

  • 学习成本:需要学习 SpringBoot 的相关知识。
  • 版本兼容性:不同版本之间可能存在兼容性问题。

总结

本篇介绍了 SpringBoot 的一些常见面试题,并结合实际应用场景进行了解答。希望读者能够通过学习这些内容,更好地理解和掌握 SpringBoot 相关知识。