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

这是目前企业最标准的开发范式,兼顾效率与性能。


六、四大框架联动完整链路(彻底打通流程)

我们用一个 查询用户列表 的场景,完整串起整套框架:

  1. 前端发起请求:GET /user/list

  2. SpringMVC 拦截请求,匹配 UserController

  3. Controller 调用 UserService 业务方法

  4. Service 调用 UserMapper 数据库查询方法

  5. MyBatis/MP 执行SQL,查询 MySQL 数据

  6. 数据逐层返回,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 核心原理与索引优化实战,持续分享后端技术体系,欢迎持续关注!

posted @ 2026-08-27 16:24  帅也是一种罪孽  阅读(32)  评论(0)    收藏  举报