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:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
- 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 的核心原理和常用场景,面试中需结合实际使用经验理解记忆。