
什么是SSM SSM是轻量级 Java Web 开发组合是国内培训班、老项目最经典的技术栈用来做后台接口、管理系统。1. Spring核心容器最底层是整个 SSM 的总管。 核心能力IOC 控制反转、AOP 面向切面IOC帮你自动创建对象、管理对象依赖不用自己 new 对象AOP做日志、事务、权限、统一异常比如方法执行前后自动记录日志提供事务管理数据库要么全部成功要么全部回滚2. SpringMVC负责 Web 层接收前端请求Spring 的子模块专门处理 HTTP 请求属于 MVC 架构里的MVC 的 CController 控制器流程 前端发请求 → SpringMVC 接收 → 找到对应的 Controller 方法 → 调用业务 → 返回数据json / 页面作用对接前端路由、参数接收、返回响应3. MyBatis持久层框架操作数据库替代原生 JDBC用来写 SQL、和 MySQL/Oracle 打交道。 特点SQL 写在 xml 或者注解里SQL 由开发自己写对比 Hibernate 全自动 ORM灵活、好优化 SQL国内企业非常爱用✅ SSM 完整分层流程MVC前端浏览器 / APP发 http 请求SpringMVCController 控制层接收参数、校验、调用业务SpringService 业务层写业务逻辑、事务控制MyBatisMapper/DAO 数据访问层执行 SQL读写数据库实体类POJO/Entity对应数据库表Model 模型前端 → SpringMVC(Controller) → Service → Mapper(MyBatis) → MySQL现在新项目大多用SpringBoot内置了 SpringSpringMVC MyBatis/MyBatis-Plus是 SSM 的简化升级版SSM 偏传统老项目Spring Boot 和Spring Cloud是啥区别是啥Spring Boot快速开发单体微服务一个独立服务是开发单个服务的脚手架简化 Spring、SSM 配置。Spring Cloud一套微服务治理全家桶用来把很多个 Spring Boot 服务组织在一起、互相配合。简单类比Spring Boot 造一辆单独的小汽车一个服务Spring Cloud 高速路网 红绿灯 调度中心管理一大堆小汽车一堆服务Spring Boot 是什么Spring Boot 不是新框架底层就是Spring SpringMVC是 SSM 的升级简化版。 核心目标消灭繁琐 XML 配置、自动装配、开箱即用。核心特点自动配置根据引入的依赖自动帮你配好 Spring、连接池、MVC 等不用写大量 xml内置 Tomcat或者 Jetty打包成 jar 包java -jar直接跑不用单独部署 tomcat 服务器起步依赖 starter比如spring-boot-starter-web一键引入 web 需要的所有包starter-mybatis整合 mybatis适合单体项目、单个独立微服务接口 可以只用 Spring Boot不碰 Spring Cloud。 比如一个后台管理系统所有业务都在这一个服务里这就是单体 SpringBoot 项目。和 SSM 对比SSM需要自己写大量 xml 配置、配 Tomcat、管理依赖版本SpringBoot自动配置、内置 web 容器、starter 管理依赖Spring Cloud 是什么Spring Cloud不是一个框架是一套规范 一堆组件集合专门解决【很多个服务分开部署之后带来的一堆问题】。 前提里面每一个微服务基本都是用 Spring Boot 写的。当项目拆成很多独立服务之后会遇到这些问题Spring Cloud 组件就是用来解决它们服务注册发现A 服务怎么找到 B 服务Nacos / Eureka服务调用服务之间怎么远程调用OpenFeign熔断限流某个服务崩了不能拖垮整个系统Sentinel / Hystrix网关统一入口鉴权、路由Gateway配置中心所有服务统一管理配置文件Nacos / Config分布式事务、链路追踪、负载均衡 等✅ 一句话Spring Cloud 负责分布式微服务之间的协作、治理。注意Spring Cloud 本身不写业务代码业务代码写在一个个 Spring Boot 项目里。清晰对比表项目Spring BootSpring Cloud定位快速构建单个 Spring 应用微服务治理框架集管理一堆服务依赖关系独立可以单独使用依赖 Spring Boot不能脱离它单独写业务解决问题简化 Spring 开发、简化配置、一键启动分布式场景服务发现、调用、熔断、网关、配置中心部署形态一个 jar是一个服务多个 SpringBoot 服务 注册中心、网关等组件一起组成集群适用场景单体项目、单个微服务大型分布式、微服务架构Java EE规范 ↓ Spring核心IOC/AOP SpringMVCweb层 MyBatis → SSM老的单体 ↓ SpringBoot Spring SpringMVC 自动配置新一代单体/单个微服务 ↓ SpringCloud把一堆SpringBoot服务管理起来做成分布式微服务集群这里解释2个误区❌ 误区SpringCloud 替代 SpringBoot✅ 真相SpringCloud 是基于 SpringBoot 的配套工具集两者是搭档不是替代关系❌ 误区用了 SpringBoot 就是微服务✅ 真相SpringBoot 可以写单体也可以写微服务微服务是架构思想SpringCloud 才是微服务治理工具以前Spring Cloud Netflix很多组件停更了 现在国内主流的微服务框架是Spring Cloud AlibabaNacos、Sentinel、Dubbo国内企业用得极多MyBatis-Plus简称 MP是MyBatis 的增强工具只增强、不改原 MyBatis专门帮忙省去单表增删改查重复 SQL和 SpringBoot 搭配是现在国内后端标配Baomidou™。不是替代 MyBatis底层依然是 MyBatis。复杂多表关联、复杂 SQL照样可以继续写 xml和以前一样。核心能干啥1、BaseMapper 自带全套单表 CRUD你的 Mapper 继承BaseMapperUser直接自带根据 id 查、新增、修改、删除、批量查询单表不用写一句 SQL、不用写 xmlMyBatis-Pl...。// 就这一行单表基础操作全部有 public interface UserMapper extends BaseMapperUser{}2、条件构造器 WrapperQueryWrapper / LambdaQueryWrapper用 Java 链式代码拼查询条件不用在 xml 里写一堆if动态 SQLLambda 写法还能防止字段名写错。// 示例名字like、年龄大于18 LambdaQueryWrapperUser wrapper Wrappers.lambdaQuery(); wrapper.like(User::getName,张).gt(User::getAge,18); ListUser list userMapper.selectList(wrapper);3、自带常用插件开箱即用分页插件物理分页自动算总数不用自己写 limit逻辑删除不是真 delete给字段打删除标记is_deleted自动填充创建时间、更新时间自动赋值乐观锁版本号控制并发更新主键策略雪花 ID、自增等分布式场景友好4、代码生成器一键生成 Entity、Mapper、Service、Controller新建表之后直接一套代码生成超级省时间。对比MyBatis和MyBatis-PlusMyBatis半自动SQL 自己写灵活但是单表 CRUD 重复代码多MyBatis-PlusMyBatis 外挂单表自动生成 SQL复杂 SQL 依然交给原生 MyBatis 写 xml简单类比MyBatis 手动挡车SQL 你自己写完全可控MyBatis-Plus 给手动挡加了自动巡航常规操作自动跑遇到复杂路况你随时切回手动写 SQL。知识总结SSM 时代SpringMVC Service Mapper 原生 MyBatis手写大量 xmlSpringBoot 新项目SpringBoot MyBatis-Plus简单单表免写 SQL复杂 SQL 手写 xml如果做微服务SpringBoot每个微服务 MyBatis-Plus SpringCloud Alibaba其他知识补充这么多小的服务我们如何管理他们使用服务治理 注册中心nacos这么多小的服务他们之间如何通讯feign这么多小的服务客户端如何访问他们getway网关这么多小的服务一旦出现问题了应该如何字处理容错sentinel这么多小的服务一旦出现问题了应该如何排错链路追踪skywalking这么多小服务怎么保证同一组事务的一致性seata