> 技术文档 > SpringBoot面试基础知识

SpringBoot面试基础知识

SpringBoot 是面试中后端开发岗位的高频考点,以下是核心考点整理:

 

1. SpringBoot 基础概念

 

- 定义:SpringBoot 是 Spring 框架的简化版,通过“自动配置”“起步依赖”等特性,简化 Spring 应用的搭建和开发,减少 XML 配置。

- 核心优势:

- 自动配置:根据类路径下的依赖自动配置 Spring 组件(如引入  spring-boot-starter-web  会自动配置 Tomcat、SpringMVC 等)。

- 起步依赖(Starter):将常用依赖打包,如  spring-boot-starter-data-jpa  包含 JPA 相关的所有依赖,无需手动管理版本。

- 嵌入式服务器:内置 Tomcat、Jetty 等,无需单独部署。

- actuator 监控:可监控应用健康状态、 metrics 等。

 

2. 自动配置原理

 

- 核心注解

-  @SpringBootApplication :组合了  @Configuration (配置类)、 @ComponentScan (扫描组件)、 @EnableAutoConfiguration (开启自动配置)。

-  @EnableAutoConfiguration :通过  @Import(AutoConfigurationImportSelector.class)  加载 META-INF/spring.factories 中定义的自动配置类。

- 条件注解:自动配置类需满足条件才生效,如  @ConditionalOnClass (类存在)、 @ConditionalOnMissingBean (Bean 不存在)等。

- 自定义配置:通过 application.properties/yaml 覆盖自动配置的默认值(如  server.port=8081 )。

 

3. 起步依赖(Starter)

 

- 原理:Starter 是一个 Maven 依赖描述符,定义了常用依赖的集合,通过 Maven 传递依赖自动引入相关 Jar 包。

- 常见 Starter:

-  spring-boot-starter-web :Web 开发(SpringMVC + Tomcat)。

-  spring-boot-starter-data-jpa :JPA 数据访问。

-  spring-boot-starter-redis :Redis 集成。

- 自定义 Starter:需定义自动配置类、编写 spring.factories 注册配置类,并打包为 Maven 依赖。

 

4. 配置文件

 

- 格式:支持 properties、yaml(更简洁,支持层级结构),优先级:properties > yaml。

- 多环境配置:

- 命名规则: application-{profile}.properties (如  application-dev.properties )。

- 激活方式: spring.profiles.active=dev (在主配置文件中指定)。

- 配置注入:

-  @Value(\"${key}\") :注入单个配置项。

-  @ConfigurationProperties(prefix = \"prefix\") :批量注入配置到实体类(需配合  @Component  或  @EnableConfigurationProperties  使用)。

 

5. 核心功能与扩展

 

- 嵌入式服务器:默认 Tomcat,可通过排除依赖切换为 Jetty 或 Undertow:

    org.springframework.boot

    spring-boot-starter-web

   

       

            org.springframework.boot

            spring-boot-starter-tomcat

       

   

    org.springframework.boot

    spring-boot-starter-jetty

 

- Actuator 监控:引入  spring-boot-starter-actuator ,通过端点(如  /health 、 /info 、 /metrics )监控应用,可配置暴露端点的方式和权限。

- 日志配置:默认使用 Logback,可通过  logging.level.包名=DEBUG  配置日志级别。

 

6. 与 Spring 生态集成

 

- Spring Security:引入  spring-boot-starter-security  实现身份认证和授权。

- MyBatis:通过  mybatis-spring-boot-starter  集成,简化 mapper 扫描和配置。

- 事务管理:使用  @Transactional  注解,SpringBoot 自动配置事务管理器。

 

7. 面试高频问题

 

- 如何理解 SpringBoot 的自动配置?其实现流程是什么?

- 如何自定义一个 Starter?

- 配置文件中如何实现多环境切换?

-  @Configuration  和  @Component  的区别?

- SpringBoot 如何解决依赖冲突?(通过 Starter 统一版本,Maven 依赖调解)

- 如何禁用某个自动配置类?( @SpringBootApplication(exclude = 类名.class) )

 

以上考点覆盖了 SpringBoot 的核心原理和常用场景,面试中需结合实际使用经验理解记忆。