news 2026/10/29 20:04:46

java主流技术栈——搞懂Spring、SpringMVC、MyBatis、SpringBoot、SpringCloud、SpringCloudAlibaba从单体到微服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java主流技术栈——搞懂Spring、SpringMVC、MyBatis、SpringBoot、SpringCloud、SpringCloudAlibaba从单体到微服务

什么是SSM ?

SSM是轻量级 Java Web 开发组合,是国内培训班、老项目最经典的技术栈,用来做后台接口、管理系统。

1. Spring(核心容器)

最底层,是整个 SSM 的总管。 核心能力:IOC 控制反转、AOP 面向切面

  • IOC:帮你自动创建对象、管理对象依赖(不用自己 new 对象)
  • AOP:做日志、事务、权限、统一异常(比如方法执行前后自动记录日志)
  • 提供事务管理(数据库要么全部成功,要么全部回滚)

2. SpringMVC(负责 Web 层,接收前端请求)

Spring 的子模块,专门处理 HTTP 请求,属于 MVC 架构里的MVC 的 C(Controller 控制器)流程: 前端发请求 → SpringMVC 接收 → 找到对应的 Controller 方法 → 调用业务 → 返回数据(json / 页面)

作用:对接前端,路由、参数接收、返回响应

3. MyBatis(持久层框架,操作数据库)

替代原生 JDBC,用来写 SQL、和 MySQL/Oracle 打交道。 特点:

  • SQL 写在 xml 或者注解里,SQL 由开发自己写(对比 Hibernate 全自动 ORM)
  • 灵活、好优化 SQL,国内企业非常爱用

✅ SSM 完整分层流程(MVC)

  1. 前端(浏览器 / APP)发 http 请求
  2. SpringMVC(Controller 控制层):接收参数、校验、调用业务
  3. Spring(Service 业务层):写业务逻辑、事务控制
  4. MyBatis(Mapper/DAO 数据访问层):执行 SQL,读写数据库

实体类:POJO/Entity,对应数据库表(Model 模型)

前端 → SpringMVC(Controller) → Service → Mapper(MyBatis) → MySQL

现在新项目大多用SpringBoot(内置了 Spring+SpringMVC) + 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 配置、自动装配、开箱即用。

核心特点:

  1. 自动配置:根据引入的依赖,自动帮你配好 Spring、连接池、MVC 等,不用写大量 xml
  2. 内置 Tomcat(或者 Jetty):打包成 jar 包,java -jar直接跑,不用单独部署 tomcat 服务器
  3. 起步依赖 starter:比如spring-boot-starter-web一键引入 web 需要的所有包;starter-mybatis整合 mybatis
  4. 适合:单体项目、单个独立微服务接口

👉 可以只用 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) + SpringMVC(web层) + MyBatis → SSM(老的单体) ↓ SpringBoot = Spring + SpringMVC + 自动配置(新一代单体/单个微服务) ↓ SpringCloud:把一堆SpringBoot服务管理起来,做成分布式微服务集群

这里解释2个误区:

❌ 误区:SpringCloud 替代 SpringBoot

✅ 真相:SpringCloud 是基于 SpringBoot 的配套工具集,两者是搭档,不是替代关系

❌ 误区:用了 SpringBoot 就是微服务

✅ 真相:SpringBoot 可以写单体,也可以写微服务;微服务是架构思想,SpringCloud 才是微服务治理工具

以前Spring Cloud Netflix(很多组件停更了) ,现在国内主流的微服务框架是:

Spring Cloud Alibaba(Nacos、Sentinel、Dubbo,国内企业用得极多)

MyBatis-Plus(简称 MP)

是MyBatis 的增强工具,只增强、不改原 MyBatis,专门帮忙省去单表增删改查重复 SQL,和 SpringBoot 搭配是现在国内后端标配Baomidou™。

不是替代 MyBatis!底层依然是 MyBatis。复杂多表关联、复杂 SQL,照样可以继续写 xml,和以前一样。

核心能干啥

1、BaseMapper 自带全套单表 CRUD你的 Mapper 继承BaseMapper<User>,直接自带:根据 id 查、新增、修改、删除、批量查询,单表不用写一句 SQL、不用写 xmlMyBatis-Pl...。

// 就这一行,单表基础操作全部有 public interface UserMapper extends BaseMapper<User>{}

2、条件构造器 Wrapper(QueryWrapper / LambdaQueryWrapper)用 Java 链式代码拼查询条件,不用在 xml 里写一堆<if>动态 SQL,Lambda 写法还能防止字段名写错。

// 示例:名字like、年龄大于18 LambdaQueryWrapper<User> wrapper = Wrappers.lambdaQuery(); wrapper.like(User::getName,"张").gt(User::getAge,18); List<User> list = userMapper.selectList(wrapper);

3、自带常用插件,开箱即用

  • 分页插件:物理分页,自动算总数,不用自己写 limit
  • 逻辑删除:不是真 delete,给字段打删除标记(is_deleted)
  • 自动填充:创建时间、更新时间自动赋值
  • 乐观锁:版本号控制并发更新
  • 主键策略:雪花 ID、自增等,分布式场景友好

4、代码生成器

一键生成 Entity、Mapper、Service、Controller,新建表之后直接一套代码生成,超级省时间。

对比MyBatis和MyBatis-Plus

  • MyBatis:半自动,SQL 自己写,灵活,但是单表 CRUD 重复代码多
  • MyBatis-Plus:MyBatis 外挂,单表自动生成 SQL;复杂 SQL 依然交给原生 MyBatis 写 xml

简单类比:

MyBatis = 手动挡车,SQL 你自己写,完全可控;

MyBatis-Plus = 给手动挡加了自动巡航,常规操作自动跑,遇到复杂路况你随时切回手动写 SQL。

知识总结:

SSM 时代:SpringMVC + Service + Mapper +原生 MyBatis(手写大量 xml)

SpringBoot 新项目:SpringBoot + MyBatis-Plus(简单单表免写 SQL,复杂 SQL 手写 xml)

如果做微服务:SpringBoot(每个微服务) + MyBatis-Plus + SpringCloud Alibaba


其他知识补充:

这么多小的服务,我们如何管理他们?(使用服务治理 注册中心)nacos
这么多小的服务,他们之间如何通讯?feign
这么多小的服务,客户端如何访问他们?getway网关
这么多小的服务,一旦出现问题了,应该如何字处理?(容错)sentinel
这么多小的服务,一旦出现问题了,应该如何排错?(链路追踪)skywalking
这么多小服务,怎么保证同一组事务的一致性?seata
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/29 20:03:52

“双师”,不是评出来的,是长出来的——教师能力清单与成长逻辑

先看一个很普遍的现象&#xff1a;一说要建双师型教师队伍&#xff0c;很多学校和老师的第一反应是“考证”——赶紧考个职业资格证、技能等级证&#xff0c;把证书凑齐&#xff0c;双师比例就上去了。于是出现了一种很拧巴的“双师”&#xff1a;证有了&#xff0c;但设备没怎…

作者头像 李华
网站建设 2026/10/29 20:02:53

想转Agent开发?别急着学框架,先改这3个思维定式!收藏这份转型指南

本文针对想从后端转行Agent开发的程序员&#xff0c;提出转型时不应急于学习LangChain、RAG等框架&#xff0c;而应首先转变思维模式。文章强调后端开发的确定性思维与Agent开发中的概率性思维差异&#xff0c;指出自学Agent时缺乏反馈机制的问题&#xff0c;并给出两条转型建议…

作者头像 李华
网站建设 2026/10/29 20:01:38

SWE-bench 涨了 67 个百分点之后:从基准分数到 Ironclad 合同工作流,‘专业工作能力‘是测出来的还是练出来的?

SWE-bench 涨了 67 个百分点之后&#xff1a;从基准分数到 Ironclad 合同工作流&#xff0c;“专业工作能力”是测出来的还是练出来的&#xff1f; 一个引人注目的数字 如果你关注大模型评测数据&#xff0c;很难忽略这样一张对比表。根据《2025 AI 大模型开发生态白皮书》引…

作者头像 李华
网站建设 2026/10/29 19:59:20

H5网页与Uniapp之间通信,通知栏

目录 1、 H5嵌套网页 1.1、 重要准备 1.2、 引入网页 1.3、 屏蔽ts类型判断 1.4、 参考代码 2、 Uniapp webview 页面&#xff08;vue 页面&#xff09; 2.1、webview页面 3、 其它配置 3.1、uniapp 3.2、H5项目 H5嵌套网页 重要准备 H5 页面需要引入 uni 的 js&am…

作者头像 李华
网站建设 2026/10/29 19:58:13

信息化技术架构规划方案PPT:四层架构+演进路径+投资估算实战拆解

简介&#xff1a;一套面向企业信息化管理者与信息技术架构规划人员的解决方案汇报案例&#xff0c;聚焦数字化转型中的技术架构规划与落地路径。内容围绕架构规划、云管理、信息安全体系建设三大主线&#xff0c;涵盖总体思路、云化资源池、多云统一管理、应用迁移上云、容灾与…

作者头像 李华