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 的核心原理和常用場景,面試中需結合實際使用經驗理解記憶。