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 接口使用,非常方便。


相关推荐
uzong2 小时前
107K Star:火爆的MarkItDown--一款用于将文件和办公文档转换为 Markdown 的 Python 工具
人工智能·后端·开源
舒一笑2 小时前
一次搞定:vLLM 部署 bge-m3 + reranker 全踩坑记录(含 404 / connection refused 终极解决方案)
人工智能·后端
隐退山林3 小时前
JavaEE进阶:导读&SpringBoot快速上手
java·spring boot·java-ee
marsh02063 小时前
33 openclawAPI设计原则:构建RESTful服务的最佳实践
后端·restful
weixin_704266053 小时前
读取Excel 和 显示预约人数
spring boot·mybatis·excel
悟空码字3 小时前
SpringBoot + 微信支付实现“扫码开门,取货自动扣款”售货柜
java·spring boot·后端
小蜜蜂dry3 小时前
nestjs实战-登录、鉴权(二)
前端·后端·nestjs
全栈王校长3 小时前
Nest 文件上传 - 就是增强版的 el-upload
前端·后端·nestjs
0xDevNull3 小时前
Spring Boot 3.x WebSocket 实战教程
spring boot·后端·websocket