当前位置: 首页 > news >正文

Spring Boot 面试核心笔记

一、Spring Boot 核心思想(必问)

✅ 1. 什么是 Spring Boot

👉简化 Spring 开发的框架

核心作用:

  • 自动配置(Auto Configuration)

  • 起步依赖(Starter)

  • 内嵌服务器(Tomcat)


✅ 2. 核心思想(3句话背下来)

👉约定大于配置
👉开箱即用
👉自动装配


二、自动配置原理(面试重点🔥)

✅ 1. 启动入口

@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}


✅ 2. @SpringBootApplication 组成

@SpringBootConfiguration
@EnableAutoConfiguration // ⭐核心
@ComponentScan


✅ 3. 自动装配核心流程(必会)

👉 核心注解:@EnableAutoConfiguration

底层做了什么:

  1. 加载配置类

  2. 扫描META-INF/spring.factories(Spring Boot 2)

  3. META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 3)

  4. 加载所有自动配置类


✅ 4. 条件注解(重点🔥)

👉 Spring Boot 不会乱加载,是“按需加载”

常见:

@ConditionalOnClass // 类存在才加载
@ConditionalOnMissingBean // 没有 Bean 才创建
@ConditionalOnProperty // 配置存在才加载

👉 面试一句话:
自动配置 = SPI + 条件注解


三、Starter 启动器(常考)

✅ 1. 什么是 Starter

👉 一组依赖的集合(开箱即用)

例如:

  • spring-boot-starter-web

  • spring-boot-starter-data-jpa


✅ 2. 原理

👉 本质就是:

  • 帮你引入依赖

    • 自动配置类


✅ 3. 自定义 Starter(进阶)

步骤:

  1. 创建 starter 模块

  2. 写自动配置类

  3. spring.factories/AutoConfiguration.imports

  4. 使用条件注解控制加载


四、配置文件(高频)

✅ 1. 常见配置文件

  • application.properties

  • application.yml(推荐)


✅ 2. YAML 示例

server:
port: 8080

spring:
datasource:
url: jdbc:mysql://localhost:3306/test


✅ 3. 读取配置方式

✔ @Value

@Value("${server.port}")
private int port;


✔ @ConfigurationProperties(推荐🔥)

@ConfigurationProperties(prefix = "user")
@Component
public class UserConfig {
private String name;
}

👉 优点:

  • 支持批量绑定

  • 结构清晰


五、常用注解(必背🔥)

✅ Controller 层

@RestController
@RequestMapping("/user")


✅ 参数接收

注解作用
@RequestParam接收 URL 参数
@PathVariable接收路径参数
@RequestBody接收 JSON

✅ Bean 管理

@Component
@Service
@Repository
@Controller


✅ 注入

@Autowired
@Resource

👉 推荐:
优先使用构造器注入(面试加分)


六、Spring Boot 内嵌服务器(必问)

✅ 默认服务器

👉 内嵌Tomcat


✅ 优势

  • 不需要部署 WAR

  • 直接main启动

  • 简化运维


✅ 如何切换服务器

👉 排除 Tomcat,引入:

  • Jetty

  • Undertow


七、Spring Boot 启动流程(高频🔥)

✅ 核心流程(精简版)

  1. 创建 SpringApplication

  2. 加载配置类

  3. 启动容器(ApplicationContext)

  4. 执行自动配置

  5. 启动内嵌 Tomcat


✅ 面试一句话总结

👉Spring Boot 启动 = 创建容器 + 自动装配 + 启动 Web 服务器


八、Spring Boot 常见面试问题(高频🔥)


❓1. Spring Boot 和 Spring 的区别

SpringSpring Boot
配置复杂自动配置
需要 XML基本不用
手动整合开箱即用

❓2. 自动装配是怎么实现的?

👉 回答模板:

👉通过 @EnableAutoConfiguration + SPI + 条件注解,实现按需加载配置类


❓3. 如何自定义配置?

👉 答:

  • application.yml

  • @ConfigurationProperties

  • @Value


❓4. Spring Boot 为什么启动快?

👉 关键点:

  • 自动配置减少开发时间

  • 内嵌容器

  • 按需加载(条件注解)


❓5. 如何排查自动配置?

👉 常用:

debug=true

👉 启动日志会显示哪些自动配置生效

http://www.jsqmd.com/news/505171/

相关文章:

  • spaCy社区与生态:探索丰富的扩展插件和工具集合
  • 掌握大数据领域Kafka的消息分区策略
  • 零基础5分钟上手「时空波动仪」:IBM Granite FlowState时间序列预测实战教程
  • 告别连接难题:Windows 11环境下Multisim主数据库稳定运行全攻略
  • Obsidian PDF++插件:如何打造你的专属护眼PDF阅读环境
  • 手把手教你用Arduino驱动串口屏:从接线到显示‘Hello World’的完整教程
  • 为什么92%的Dify部署在生产环境未启用Judge沙箱?——深度解析动态评分链路中的6类未授权推理逃逸风险
  • Windows Server 2022上Docker部署Dify避坑指南:从Hyper-V配置到镜像加速全流程
  • 别再乱接线了!手把手教你搞定HDMI/DP/Type-C接口的硬件检测电路(附原理图分析)
  • 视频内容结构化提取:自动化PPT提取工具的专业解决方案
  • 【嵌入式C代码质量生死线】:20年老兵亲测的5大静态分析工具选型铁律,错过再等三年!
  • 解锁游戏语言魔盒:XUnity.AutoTranslator让你的Unity游戏开口说中文
  • 你还在用免费版?嵌入式C静态分析工具的3个隐藏成本陷阱(License/误报调试工时/CI集成失败率实测曝光)
  • 别再只配CorsRegistry了!Spring Security和拦截器下的CORS问题一站式解决指南
  • Simplicity Studio 5最新版安装指南:从SDK下载到工程创建全流程(附Gecko SDK配置技巧)
  • weixin240基于微信小程序的校园综合服务平台ssm(文档+源码)_kaic
  • 数字货币量化交易接口全解析:从币安到OKX的实战代码与风控策略
  • GitHub_Trending/we/WeChatMsg单元测试实战:核心模块测试案例
  • Kotlin+OkHttp:从零开始打造你的专属网络请求日志拦截器
  • 72小时攻克短线交易痛点:Clairvoyant机器学习预测框架实战指南
  • Puter离线工作模式:无网络环境下的数据同步终极指南
  • VisionPro图像预处理实战:CogIPOneImageTool从入门到精通(附常见问题解决方案)
  • 矩阵变换的魔法:初等矩阵与行变换的深层联系解析
  • Win10下ONNXRuntime-GPU版安装避坑指南:CUDA与cuDNN版本兼容性实测
  • 老旧Mac设备兼容新系统完全指南:驱动优化与系统升级解决方案
  • 快速上手:10分钟在Windows系统完成CosyVoice本地体验部署
  • Jitsi Meet安全加固指南:SSH与防火墙规则最佳配置
  • 从两张图片到全场位移:数字图像相关法(DIC)实战入门
  • GitHub_Trending/ms/MS-DOS软盘格式化算法:磁道与扇区的组织艺术
  • Dioxus代码分割:优化应用加载性能的终极指南