SSM 框架(Spring + SpringMVC + MyBatis)

面试 + 工作必背,极简清晰版

SSM = Spring(容器) + SpringMVC(Web层) + MyBatis(持久层)

是 Java 后端最经典的企业级开发框架组合。


一、三大框架作用(一句话记住)

  1. Spring:工厂,管理所有对象(Service、Controller、Dao),提供 IOC、AOP、事务
  2. SpringMVC:接收前端请求、分发、参数接收、返回数据
  3. MyBatis:操作数据库,写 SQL,比 JDBC 简单

二、Spring 核心(最关键)

1. 两大核心思想

① IOC 控制反转

  • 把创建对象的权利交给 Spring
  • 不用自己 new 对象,Spring 帮你创建、管理
  • 实现:工厂模式 + 反射 + 配置

② AOP 面向切面编程

  • 不修改源码,统一增强功能
  • 场景:日志、事务、权限、性能监控
  • 底层:动态代理
    • JDK 动态代理(有接口)
    • CGLIB 代理(无接口)

2. Spring 事务管理

  • 声明式事务@Transactional
  • 核心:事务传播机制、隔离级别、回滚
  • 传播机制(常用):
    • REQUIRED:有就用,没有就新建(默认)
    • SUPPORTS:支持当前事务
  • 回滚:默认运行时异常回滚

3. 常用注解

  • @Component 通用组件
  • @Service 业务层
  • @Controller 控制层
  • @Repository 持久层
  • @Autowired 自动注入
  • @Value 读取配置
  • @Configuration 配置类

三、SpringMVC 核心

1. 执行流程(面试必问)

  1. 前端请求 → DispatcherServlet(前端控制器)
  2. 查找 HandlerMapping → 找到对应 Controller
  3. 执行 Controller 方法
  4. 返回 ModelAndView / JSON
  5. 视图解析器渲染 / 直接返回 JSON

2. 核心注解

  • @Controller 控制器
  • @RestController = @Controller + @ResponseBody(返回 JSON)
  • @RequestMapping 请求路径
  • @GetMapping / @PostMapping
  • @RequestParam 接收参数
  • @RequestBody 接收 JSON
  • @PathVariable 路径参数

3. 作用

接收请求 → 调用 Service → 返回结果给前端


四、MyBatis 核心

1. 是什么?

优秀的持久层框架,简化 JDBC,支持自定义 SQL

2. 核心组件

  • SqlSessionFactory:工厂
  • SqlSession:连接会话
  • Mapper 接口:Dao 层
  • Mapper.xml:写 SQL

3. 工作流程

  1. 加载核心配置
  2. 创建 SqlSessionFactory
  3. 创建 SqlSession
  4. 执行 Mapper 接口方法
  5. MyBatis 自动执行 SQL 并返回结果

4. 核心特性

  • 一级缓存(SqlSession 级别,默认开启)
  • 二级缓存(全局缓存,需手动开启)
  • 动态 SQL<if>、<where>、<foreach>
  • 结果集自动映射

5. 注解版

java 复制代码
@Select("select * from user where id=#{id}")
User findById(Integer id);

五、SSM 整合流程(最标准)

  1. 导入 Spring、SpringMVC、MyBatis、MySQL、连接池依赖
  2. 配置 Spring:扫描组件、事务
  3. 配置 SpringMVC:开启注解、静态资源、视图解析器
  4. 配置 MyBatis:数据源、SqlSessionFactory、Mapper 扫描
  5. 写三层架构:
    • Controller → Service → Dao(Mapper)
  6. 部署 Tomcat 运行

六、SSM 项目标准结构

复制代码
com.xxx
├─ controller   控制层
├─ service      业务接口
│  └─ impl      实现类
├─ mapper       Dao 层
├─ pojo/entity  实体类
├─ vo           前端返回对象
├─ config       配置类
└─ util         工具类

七、高频面试题(必背)

1. Spring IOC 原理?

  • 读取配置/注解
  • 通过反射创建对象
  • 放入 Bean 工厂(容器)
  • 需要时自动注入

2. AOP 底层?

动态代理:JDK 代理 / CGLIB

3. Spring 事务失效场景?

  • 非 public 方法
  • 异常被 try-catch 吃掉
  • 自调用(没有经过代理)

4. MyBatis 一级缓存 vs 二级缓存

  • 一级:SqlSession 级别
  • 二级:Mapper 级别,跨 Session

5. SpringMVC 执行流程?

请求 → DispatcherServlet → 映射 → 执行方法 → 返回结果


八、最简单总结

  • Spring:管理对象、事务、AOP
  • SpringMVC:接收请求、返回数据
  • MyBatis:操作数据库、写 SQL

相关推荐
帅次2 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
Ramble_Naylor2 小时前
东方通(TongWeb)SpringBoot开发指导
java·spring boot
大鹏说大话2 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【64】 ReactAgent 长期记忆
java·人工智能·spring
quan26312 小时前
20260529,日常开发-数据库主从问题
java·mysql·主从·延迟
JacksonMx2 小时前
@Transactional 最佳实践
java·spring boot·spring·性能优化
Sincerelyplz2 小时前
【AI会议纪要实践】mapReduce、RAG 与结构化输出
java·后端·agent
过期动态3 小时前
【LeetCode 热题 100】接雨水
java·数据结构·算法·leetcode·职场和发展
zhangjw343 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试