面试 + 工作必背,极简清晰版
SSM = Spring(容器) + SpringMVC(Web层) + MyBatis(持久层)
是 Java 后端最经典的企业级开发框架组合。
一、三大框架作用(一句话记住)
- Spring:工厂,管理所有对象(Service、Controller、Dao),提供 IOC、AOP、事务
- SpringMVC:接收前端请求、分发、参数接收、返回数据
- 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. 执行流程(面试必问)
- 前端请求 → DispatcherServlet(前端控制器)
- 查找 HandlerMapping → 找到对应 Controller
- 执行 Controller 方法
- 返回 ModelAndView / JSON
- 视图解析器渲染 / 直接返回 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. 工作流程
- 加载核心配置
- 创建 SqlSessionFactory
- 创建 SqlSession
- 执行 Mapper 接口方法
- MyBatis 自动执行 SQL 并返回结果
4. 核心特性
- 一级缓存(SqlSession 级别,默认开启)
- 二级缓存(全局缓存,需手动开启)
- 动态 SQL :
<if>、<where>、<foreach> - 结果集自动映射
5. 注解版
java
@Select("select * from user where id=#{id}")
User findById(Integer id);
五、SSM 整合流程(最标准)
- 导入 Spring、SpringMVC、MyBatis、MySQL、连接池依赖
- 配置 Spring:扫描组件、事务
- 配置 SpringMVC:开启注解、静态资源、视图解析器
- 配置 MyBatis:数据源、SqlSessionFactory、Mapper 扫描
- 写三层架构:
- Controller → Service → Dao(Mapper)
- 部署 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