要理解三者关系,核心是“从基础框架到简化工具”的演进,具体定义和定位如下:
1. Spring(核心框架)
-
本质:一个Java EE的基础开发框架,核心是IoC(控制反转) 和AOP(面向切面编程) 两大思想。
-
作用:解决Java开发中“对象创建、依赖管理、代码解耦”等基础问题,比如通过IoC容器自动管理对象,通过AOP简化日志、事务等重复代码。
-
特点:功能基础但灵活,可单独用于后端开发,但需要手动配置大量XML或注解,上手成本较高。
2. Spring MVC(Web子框架)
-
本质:Spring框架的一个Web模块,专注于解决Java Web开发中的“请求处理、页面跳转、参数传递”等问题。
-
作用:实现了MVC(Model-View-Controller)设计模式,比如:
Controller:接收前端请求,调用业务逻辑; Model:处理业务数据; View:返回页面或数据(如JSP、JSON)。
-
特点:依赖Spring核心框架,需与Spring整合配置,是早期Java Web开发的主流方案(如SSM框架:Spring + Spring MVC + MyBatis)。
3. Spring Boot(简化工具)
-
本质:基于Spring和Spring MVC的“快速开发脚手架”,核心是“自动配置”和“** starters依赖**”。
-
作用:解决Spring开发中“配置繁琐、依赖冲突”的痛点,比如:
-
自动配置:无需手动写XML,框架根据依赖jar包自动配置环境(如自动配置Tomcat、数据库连接池);
-
starters依赖:一个依赖(如spring-boot-starter-web)包含Spring MVC、Tomcat等所有Web开发所需组件,无需手动引入多个jar。
-
特点:开箱即用,大幅简化开发流程,是当前微服务和Java后端开发的主流工具。
三者关系总结
包含关系:Spring是基础,Spring MVC是Spring的Web子模块,Spring Boot整合了Spring和Spring MVC,并增加了自动配置能力。
三者关系图:
graph TD
A[Spring Framework] --> B[核心功能: IoC, AOP, 事务等];
A --> C[众多模块];
C --> D[Spring MVC Web模块];
E[Spring Boot] --> F[核心思想: 约定优于配置];
E --> G[自动配置 Auto-Configuration];
E --> H[起步依赖 Starters];
E --> I[内嵌服务器 Embedded Server];
D -.-> G;
A -.-> G;
style A fill:#f9f,stroke:#333,stroke-width:2px
style D fill:#ccf,stroke:#333,stroke-width:2px
style E fill:#9f9,stroke:#333,stroke-width:2px
J[现代Spring应用] --> E;
J --> D;
J --> A;
演进逻辑:从“需要手动配置的基础框架(Spring)”→“专注Web开发的子框架(Spring MVC)”→“一键式快速开发工具(Spring Boot)”,核心是降低开发复杂度、提高效率。
分层示意图:
graph BT
subgraph Modern Spring Boot Application [现代Spring Boot应用]
direction BT
L4[你的业务代码] --> L3;
subgraph L3 [Spring Boot]
L3_1[自动配置] --> L2;
L3_2[起步依赖] -- 引入 --> L2_2;
L3_3[执行引擎: 内嵌Tomcat/Jetty] -- 托管 --> L2_1;
end
subgraph L2 [Spring Framework]
L2_2[Spring Core: IoC Container, AOP, Events...] -- 基础支撑 --> L2_1;
L2_1[Spring MVC Module] -- 处理请求/响应 --> L2_2;
end
end
style L2 fill:#ff9,stroke:#333,stroke-width:1px
style L3 fill:#9f9,stroke:#333,stroke-width:2px
style L2_1 fill:#ccf,stroke:#333,stroke-width:2px