spring boot和mybatis框架的设计思想和核心逻辑

一、Spring Boot 设计思想 & 核心逻辑

面试标准回答(背诵版)

Spring Boot 的核心设计思想是:约定大于配置,简化开发,自动装配,开箱即用

它的目标是消除繁琐的 XML 配置、降低框架集成成本、让开发者专注业务逻辑

核心逻辑(面试官想听的关键点)

  1. 自动装配(AutoConfiguration)

    • 通过 @SpringBootApplication 开启自动配置
    • 底层读取 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
    • 根据类路径下的依赖(如 Redis、JDBC、MyBatis)自动判断并创建 Bean
    • @Conditional 系列注解控制 Bean 是否生效
  2. 起步依赖(Starter)

    • Starter 本质是依赖聚合 + 自动配置
    • 引入一个 starter 就自动引入一堆相关依赖,不用手动管理版本
    • 比如 spring-boot-starter-web 自动包含 tomcat、springmvc、json 等
  3. 内嵌服务器

    • 内置 Tomcat / Jetty / Undertow
    • 项目打成 jar 直接运行,无需部署外部容器
  4. 统一外部化配置

    • 支持 application.yml / application.properties
    • 支持多环境切换(dev/test/prod)
    • 配置自动绑定到 Bean,简化配置读取

一句话总结 Spring Boot

Spring Boot 通过自动装配 + 起步依赖 + 内嵌容器,实现了快速搭建、零 XML、开箱即用的微服务开发体验。


二、MyBatis 设计思想 & 核心逻辑

面试标准回答

MyBatis 是一款半自动的 ORM 框架 ,设计思想是:SQL 与代码分离,灵活可控,轻量级,性能优秀

它不屏蔽 SQL,让开发者可以手写优化 SQL,适合互联网高并发、复杂查询场景。

核心逻辑

  1. ORM 映射

    • 通过 XML 或注解,建立 Java 对象 ↔ 数据库表字段 的映射关系
    • 自动完成结果集封装,不用手动写 JDBC 的 ResultSet 处理
  2. SQL 与代码解耦

    • SQL 写在 Mapper XML 里,不硬编码在 Java 中
    • 便于 SQL 维护、优化、DBA 协作
  3. 核心组件流程(面试必说)

    1. 加载核心配置文件 mybatis-config.xml
    2. 构建 SqlSessionFactory(会话工厂,单例)
    3. 生产 SqlSession(负责与数据库交互,线程不安全)
    4. 通过 MapperProxy 动态代理生成 Mapper 接口实现类
    5. 执行 SQL,通过 Executor 调度 StatementHandler、ParameterHandler、ResultSetHandler
    6. 封装结果返回 Java 对象
  4. 一级缓存 & 二级缓存

    • 一级缓存:SqlSession 级别,默认开启
    • 二级缓存:Mapper 级别,需要手动开启
    • 减少数据库访问,提升性能

一句话总结 MyBatis

MyBatis 通过配置映射 + 动态代理 + 封装 JDBC,实现灵活的 ORM 操作,既保留 SQL 控制力,又简化了 JDBC 冗余代码。


三、Spring Boot + MyBatis 整合逻辑(面试加分项)

整合原理

  1. 引入 mybatis-spring-boot-starter
  2. Starter 自动配置:
    • SqlSessionFactory
    • SqlSessionTemplate
    • 自动扫描 @Mapper 接口或 @MapperScan 指定包
  3. Spring 管理 Mapper 代理对象,纳入 IOC 容器
  4. 事务由 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 接口使用,非常方便。


相关推荐
zx28596340010 分钟前
Laravel6.x新特性全解析
java·后端·spring
Jul1en_44 分钟前
Claude 迁移 Codex 工作流迁移与更新
java·服务器·前端·后端·ai编程
神奇小汤圆44 分钟前
京东二面:假如SQL中join了10张表,如何优化性能?
后端
Arya_aa1 小时前
数据字典模块–MapStruct对象转换与加密处理
spring boot
神奇小汤圆1 小时前
Spring AOP底层黑科技:巧妙破解微服务异步线程池导致事务与链路上下文丢失难题
后端
用户9138381707991 小时前
从乐观锁到悲观锁:一次库存并发问题的排查与重构
后端
程序员包打听1 小时前
MoonBit 是什么?给第一次听说这门语言的你
前端·后端
RuoyiOffice1 小时前
2026 年开源 BPM/工作流引擎大盘点:Flowable vs Camunda vs Activiti vs Turbo——谁才是企业级首选?
java·spring boot·后端·开源·流程图·ruoyi·anti-design-vue
SamDeepThinking1 小时前
别把业务逻辑塞进存储过程,适当用表驱动法
java·后端·架构
只做人间不老仙2 小时前
C++ grpc 截止时间示例学习
后端·grpc