1.3 SpringBoot 的核心特性(面试题)

1.3.1 自动配置(Auto-configuration)

SpringBoot 的核心特性之一,能够根据类路径中的依赖自动配置 Spring 应用。它会检查类路径中的 JAR 包,并基于这些依赖自动配置 Spring Bean。例如:

  • 如果类路径中有spring-webmvc依赖,SpringBoot 会自动配置 DispatcherServlet
  • 如果检测到 H2 数据库的依赖,会自动配置内存数据库

自动配置可以通过@EnableAutoConfiguration注解开启,而@SpringBootApplication注解已包含此注解。

1.3.2 起步依赖(Starter Dependencies)

SpringBoot 提供了一系列命名为spring-boot-starter-*的依赖模块,每个 starter 包含了特定功能所需的所有依赖。例如:

  • spring-boot-starter-web:包含开发 Web 应用所需的 Spring MVC、Tomcat 等依赖
  • spring-boot-starter-data-jpa:包含 Spring Data JPA 和 Hibernate 等依赖
  • spring-boot-starter-security:包含 Spring Security 相关依赖

起步依赖解决了传统开发中依赖版本冲突的问题,SpringBoot 会自动管理这些依赖的版本兼容性。

1.3.3 嵌入式服务器(Embedded Servers)

SpringBoot 内置了多种嵌入式 Web 服务器,包括:

  • Tomcat(默认)
  • Jetty
  • Undertow

这使得 SpringBoot 应用可以直接打包为可执行 JAR 文件,无需部署到外部服务器,简化了应用的部署和运行流程。

1.3.4 生产就绪特性(Production-Ready Features)

SpringBoot 提供了一系列适用于生产环境的特性:

  • 应用监控(通过 Spring Boot Actuator)
  • 健康检查
  • 外部化配置
  • 日志管理
  • 应用指标收集

这些特性使开发者能够轻松构建符合生产标准的应用程序。

1.3.5 无代码生成和 XML 配置

SpringBoot 完全摒弃了 XML 配置,采用注解和 JavaConfig 的方式进行配置,同时不需要任何代码生成,保持了代码的简洁性和可维护性。

1.3.6 开箱即用(Out-of-the-box)

SpringBoot 提供了合理的默认配置,开发者可以 "开箱即用",无需手动配置即可启动应用。同时,这些默认配置也可以根据需求进行自定义,实现了灵活性和简便性的平衡。

1.4 SpringBoot 的技术栈组成

SpringBoot 构建在 Spring 生态系统之上,并整合了多种常用技术:

  1. 核心框架:Spring Framework
  2. Web 框架:Spring MVC
  3. 数据访问
    • Spring Data Mybatis
    • Spring Data MongoDB
    • Spring Data Redis 等
  1. 安全框架:Spring Security
  2. 依赖注入:Spring IoC 容器
  3. 嵌入式服务器:Tomcat、Jetty、Undertow
  4. 构建工具:Maven、Gradle
  5. 测试框架:JUnit、Mockito、Spring Test

1.5 SpringBoot 的应用场景

SpringBoot 适用于各种 Java 应用开发场景:

  1. Web 应用开发:RESTful API、传统 Web 应用
  2. 微服务架构:作为微服务的基础框架
  3. 企业级应用:整合各种企业级组件
  4. 数据处理应用:批处理任务、数据 ETL
  5. 云原生应用:适合开发部署在云环境的应用
  6. 物联网应用:设备数据采集和处理

无论是小型应用还是大型企业级系统,SpringBoot 都能提供高效的开发体验。

1.6 SpringBoot 与其他技术的关系

  • 与 Spring Framework:SpringBoot 是 Spring Framework 的扩展和简化,不是替代关系
  • 与 Spring Cloud:SpringBoot 是 Spring Cloud 的基础,Spring Cloud 构建在 SpringBoot 之上,提供微服务治理能力
  • 与 Jakarta EE:SpringBoot 可以替代传统的 Jakarta EE 应用开发,提供更简洁的开发方式
  • 与微服务:SpringBoot 是构建微服务的理想选择,但本身不是微服务框架

1.7 为什么选择 SpringBoot

  1. 提高开发效率:减少配置工作,让开发者专注于业务逻辑
  2. 简化部署流程:可执行 JAR 包直接运行,无需额外服务器配置
  3. 降低学习成本:统一的开发范式,减少对框架细节的关注
  4. 强大的社区支持:活跃的社区和丰富的文档资源
  5. 良好的扩展性:可以根据需求自定义配置,扩展灵活
  6. 与主流技术无缝集成:轻松整合各种开源框架和工具
  7. 适合敏捷开发:快速迭代,缩短开发周期

SpringBoot 已经成为 Java 开发的事实标准之一,掌握 SpringBoot 是现代 Java 开发者的必备技能。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐