Java主流开发框架栈
大家好,今天继续更新 Java 后端核心技术栈系列。
如果说 Java 基础是后端的“内功”,那主流开发框架栈就是后端的“拳脚招式”。
绝大多数 Java 后端日常工作,本质就干一件事:接收请求、处理业务、操作数据库、返回结果。而支撑这套流程的核心框架就是:SpringBoot + SpringMVC + MyBatis + MyBatis-Plus。
很多开发者工作几年,只会 CRUD 堆砌代码,却搞不懂:
-
SpringBoot 为什么能取代 SSM?
-
SpringMVC 到底负责哪一层?
-
MyBatis 和 MP 该怎么选型?
-
整个请求链路是如何从前端直达数据库的?
今天这篇内容,我用通俗、落地的方式,一次性说明 Java 业务开发全套主流框架栈,帮你打通「接口请求 → 业务逻辑 → 数据库操作」的完整闭环。
一、整体架构认知:四层经典分层
企业 99% 的 SpringBoot 项目,都遵循一套标准分层架构,框架各司其职、互不越界:
前端请求 → SpringMVC(控制层)→ Service(业务层)→ MyBatis(持久层)→ MySQL
-
SpringMVC:管请求、管参数、管响应(只做Web层)
-
SpringBoot:管项目启动、自动配置、容器管理(整体脚手架)
-
MyBatis:管数据库自定义SQL、复杂查询
-
MyBatis-Plus:基于MyBatis增强,管通用CRUD、高效开发
搞懂分层职责,就不会写出 Controller 写业务、Service 写SQL 的烂代码。
二、SpringBoot:现代Java项目的万能脚手架
在 SpringBoot 出现之前,我们使用 SSM 开发,需要手动配置大量 XML、整合各种依赖、处理版本冲突,搭建一个项目动辄大半天。
SpringBoot 的核心使命:消灭配置、统一架构、快速落地。
2.1 核心两大特性
1)自动配置(核心灵魂)
根据项目引入的依赖,自动帮你装配Bean、自动初始化组件、自动加载配置。
比如你引入 mybatis-spring-boot-starter,SpringBoot 自动帮你:
-
创建 SqlSession 工厂
-
自动扫描 Mapper 文件
-
自动装配数据源
无需任何 XML 配置,开箱即用。
2)Starter 启动器
所有功能被封装成 starter,需要什么引什么,彻底解决版本冲突问题。
常见核心 Starter:
-
spring-boot-starter-web:整合MVC、Tomcat,Web项目必备 -
mybatis-spring-boot-starter:MyBatis 核心整合包 -
mybatis-plus-boot-starter:MP 增强包 -
spring-boot-starter-test:单元测试
2.2 核心优势(面试常问)
-
内嵌 Tomcat,项目可直接 Jar 包运行,无需部署容器
-
零XML配置,注解驱动开发
-
自动依赖管理,规避版本冲突
-
多环境配置,适配开发、测试、生产
三、SpringMVC:前后端交互的唯一入口
很多新手分不清 SpringBoot 和 SpringMVC 的关系,一句话讲透:
SpringBoot 是房子框架,SpringMVC 是房子的门窗(专门负责对外交互)。
SpringMVC 是 SpringBoot 内置的 Web 框架,所有前端请求、第三方接口请求,全部经过它处理。
3.1 完整请求执行流程
前端请求 → DispatcherServlet 前端控制器 → HandlerMapping 路由匹配 → Controller → Service → 返回结果 → 统一响应封装
-
DispatcherServlet:MVC 核心中枢,拦截所有请求,统一分发
-
HandlerMapping:根据URL匹配对应的Controller方法
-
Controller:接收参数、调用业务、返回数据(只做调度,不写复杂业务)
3.2 企业开发规范(必遵守)
-
Controller 只负责接收参数、调用Service、返回结果
-
禁止在 Controller 写大量业务逻辑、SQL 逻辑
-
统一返回 Result 格式,禁止直接返回原生数据
-
使用全局异常拦截,统一处理报错信息
3.3 核心常用能力
-
RESTful 风格接口设计(GET/POST/PUT/DELETE)
-
请求参数自动绑定、JSON序列化解析
-
拦截器、过滤器实现登录校验、权限拦截
-
跨域统一配置
四、MyBatis:轻量级持久层核心框架
如果说 MVC 负责“接请求”,那 MyBatis 就负责“操作数据库”。
MyBatis 是一款 轻量级、半自动化ORM框架,也是目前企业绝对主流的数据库操作框架,完全替代原生 JDBC。
4.1 核心优势对比JDBC
-
无需手动创建连接、关闭连接、预处理参数
-
SQL 与 Java 代码解耦,维护更方便
-
自动结果集映射,ResultSet 自动封装为实体类
-
支持动态SQL,适配复杂查询场景
4.2 核心核心能力
-
动态SQL:if、where、foreach,解决多条件模糊查询拼接难题
-
参数绑定:#{} 预编译防止SQL注入,${} 直接拼接
-
多表关联查询:一对一、一对多关联映射
-
结果映射:数据库下划线自动映射实体类驼峰
4.3 适用场景
复杂查询、多表关联、复杂统计、自定义SQL场景首选MyBatis。
这也是为什么 JPA 逐渐被淘汰,而 MyBatis 长期霸榜的原因:灵活、可控、SQL透明、性能可调优。
五、MyBatis-Plus:零SQL高效开发神器
MyBatis 虽然灵活,但简单的增删改查每次都要写 SQL,重复代码过多。
MyBatis-Plus(MP)是 MyBatis 的增强工具,只增强、不改变、不影响原有MyBatis功能。
简单说:简单CRUD不用写SQL,复杂SQL继续用原生MyBatis,两全其美。
5.1 核心超强能力
-
内置通用 Mapper:insert、update、delete、select 零SQL开发
-
条件构造器 QueryWrapper:链式编程,动态拼接查询条件
-
自动分页插件:一行代码实现分页查询
-
自动填充:创建时间、修改时间、创建人自动赋值
-
逻辑删除、乐观锁、主键自增策略
5.2 实战选型原则(企业标准)
-
简单CRUD、单表查询:优先使用 MP,极致开发效率
-
多表关联、复杂统计、复杂条件:退回原生 MyBatis 手写SQL
这是目前企业最标准的开发范式,兼顾效率与性能。
六、四大框架联动完整链路(彻底打通流程)
我们用一个 查询用户列表 的场景,完整串起整套框架:
-
前端发起请求:GET /user/list
-
SpringMVC 拦截请求,匹配 UserController
-
Controller 调用 UserService 业务方法
-
Service 调用 UserMapper 数据库查询方法
-
MyBatis/MP 执行SQL,查询 MySQL 数据
-
数据逐层返回,MVC 统一封装返回体响应前端
SpringBoot 在全程负责:项目启动、容器管理、自动配置、整合所有框架。
七、框架栈优缺点与总结
7.1 整套技术栈优点
-
生态成熟、稳定、BUG少、社区活跃
-
分层清晰、职责单一、代码可维护性极高
-
适配单体、微服务、中小型互联网项目全覆盖
-
开发效率高,MP 大幅解放重复CRUD工作
7.2 面试高频问答
Q:SpringBoot 和 SpringMVC 的区别?
SpringBoot 是项目脚手架,负责自动配置、项目搭建、依赖管理;SpringMVC 是Web请求框架,负责请求接收与响应。SpringBoot 内置 SpringMVC。
Q:MyBatis 和 MP 的区别?
MP 基于 MyBatis 增强,不改变原有逻辑;MyBatis 擅长复杂SQL,MP 擅长单表高效CRUD。
Q:为什么不用 JPA?
JPA 自动生成SQL可控性差,复杂查询低效、调优困难,不适合互联网高并发项目;MyBatis SQL透明、灵活、易优化。
八、写在最后
SpringBoot + MVC + MyBatis + MP 不是简单的工具堆砌,而是一套规范、成熟、工业化的 Java 业务开发标准体系。
不能只会用框架写代码,需要懂得分层、解耦、选型、调优、规范落地。
也是后续学习微服务、中间件、分布式架构的基础前提。
下一篇我将继续更新系列博客:MySQL 核心原理与索引优化实战,持续分享后端技术体系,欢迎持续关注!
浙公网安备 33010602011771号