一、Spring Boot 设计思想 & 核心逻辑
面试标准回答(背诵版)
Spring Boot 的核心设计思想是:约定大于配置,简化开发,自动装配,开箱即用 。
它的目标是消除繁琐的 XML 配置、降低框架集成成本、让开发者专注业务逻辑。
核心逻辑(面试官想听的关键点)
-
自动装配(AutoConfiguration)
- 通过
@SpringBootApplication开启自动配置 - 底层读取
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports - 根据类路径下的依赖(如 Redis、JDBC、MyBatis)自动判断并创建 Bean
- 用
@Conditional系列注解控制 Bean 是否生效
- 通过
-
起步依赖(Starter)
- Starter 本质是依赖聚合 + 自动配置
- 引入一个 starter 就自动引入一堆相关依赖,不用手动管理版本
- 比如
spring-boot-starter-web自动包含 tomcat、springmvc、json 等
-
内嵌服务器
- 内置 Tomcat / Jetty / Undertow
- 项目打成 jar 直接运行,无需部署外部容器
-
统一外部化配置
- 支持 application.yml / application.properties
- 支持多环境切换(dev/test/prod)
- 配置自动绑定到 Bean,简化配置读取
一句话总结 Spring Boot
Spring Boot 通过自动装配 + 起步依赖 + 内嵌容器,实现了快速搭建、零 XML、开箱即用的微服务开发体验。
二、MyBatis 设计思想 & 核心逻辑
面试标准回答
MyBatis 是一款半自动的 ORM 框架 ,设计思想是:SQL 与代码分离,灵活可控,轻量级,性能优秀 。
它不屏蔽 SQL,让开发者可以手写优化 SQL,适合互联网高并发、复杂查询场景。
核心逻辑
-
ORM 映射
- 通过 XML 或注解,建立 Java 对象 ↔ 数据库表字段 的映射关系
- 自动完成结果集封装,不用手动写 JDBC 的 ResultSet 处理
-
SQL 与代码解耦
- SQL 写在 Mapper XML 里,不硬编码在 Java 中
- 便于 SQL 维护、优化、DBA 协作
-
核心组件流程(面试必说)
- 加载核心配置文件
mybatis-config.xml - 构建
SqlSessionFactory(会话工厂,单例) - 生产
SqlSession(负责与数据库交互,线程不安全) - 通过
MapperProxy动态代理生成 Mapper 接口实现类 - 执行 SQL,通过
Executor调度 StatementHandler、ParameterHandler、ResultSetHandler - 封装结果返回 Java 对象
- 加载核心配置文件
-
一级缓存 & 二级缓存
- 一级缓存:SqlSession 级别,默认开启
- 二级缓存:Mapper 级别,需要手动开启
- 减少数据库访问,提升性能
一句话总结 MyBatis
MyBatis 通过配置映射 + 动态代理 + 封装 JDBC,实现灵活的 ORM 操作,既保留 SQL 控制力,又简化了 JDBC 冗余代码。
三、Spring Boot + MyBatis 整合逻辑(面试加分项)
整合原理
- 引入
mybatis-spring-boot-starter - Starter 自动配置:
SqlSessionFactorySqlSessionTemplate- 自动扫描
@Mapper接口或@MapperScan指定包
- Spring 管理 Mapper 代理对象,纳入 IOC 容器
- 事务由 Spring 的
PlatformTransactionManager统一控制
执行流程(极简版)
Controller → Service → Mapper 接口 → MyBatis 动态代理 → 执行 XML SQL → 返回结果
四、面试时完整话术(直接照着说)
面试官问:讲一下 Spring Boot 和 MyBatis 的设计思想和核心逻辑?
你可以这样回答:
Spring Boot 的核心设计思想是约定大于配置、开箱即用 ,目的是简化 Spring 生态的开发。
它主要通过自动装配 ,根据依赖自动创建 Bean;通过Starter 起步依赖 统一管理依赖;再加上内嵌 Web 容器,让项目可以直接打成 jar 运行,极大减少配置和集成成本。
MyBatis 是一个轻量级半自动 ORM 框架 ,设计思想是SQL 与代码分离,灵活可控 。它不像 Hibernate 全自动屏蔽 SQL,而是允许开发者手写优化 SQL,通过 XML 或注解完成对象与表的映射。
核心流程是加载配置、构建 SqlSessionFactory、生成 SqlSession,通过动态代理执行 Mapper 方法,最终封装结果返回。
两者整合时,通过 mybatis-spring-boot-starter 实现自动配置,Spring 管理 SqlSessionFactory 和 Mapper 代理对象,让我们可以直接注入 Mapper 接口使用,非常方便。