当前位置: 首页 > news >正文

Spring、Spring MVC 与 Spring Boot 的关系与核心用途


1. 三者关系图解
+-------------------+
|    Spring Boot     | → 基于 Spring,简化配置与部署
+-------------------+▲| 依赖
+-------------------+
|  Spring Framework  | → 核心容器(IoC/AOP)与基础模块
+-------------------+▲| 扩展
+-------------------+
|    Spring MVC      | → 基于 Spring 的 Web 框架
+-------------------+

2. 核心用途对比
框架核心用途典型场景
Spring提供轻量级容器(IoC/AOP),管理对象生命周期和依赖关系任何需要解耦和模块化的Java应用
Spring MVC构建 Web 层应用,处理 HTTP 请求/响应,实现 MVC 分层架构传统 Web 应用(如企业后台管理系统)
Spring Boot快速启动 Spring 应用,通过自动配置和约定大于配置简化开发微服务、REST API、快速原型开发

3. 详细解析
3.1 Spring Framework
  • 核心功能
    • IoC(控制反转):通过容器管理对象的创建和依赖注入(如 @Autowired)。
    • AOP(面向切面编程):实现日志、事务等横切关注点的模块化。
    • 数据访问:集成 JDBC、ORM 框架(如 Hibernate)。
    • 事务管理:声明式事务支持(@Transactional)。
  • 典型代码
@Service
public class UserService {@Autowiredprivate UserRepository userRepo;
}
3.2 Spring MVC
  • 核心功能
    • 请求处理:通过 @Controller@RequestMapping 映射 HTTP 请求。
    • 视图解析:支持 JSP、Thymeleaf、FreeMarker 等模板引擎。
    • 数据绑定:自动将请求参数绑定到 Java 对象(如 @RequestParam)。
    • REST 支持:通过 @RestController 构建 RESTful API。
  • 典型代码
@Controller
public class UserController {@GetMapping("/users")public String listUsers(Model model) {model.addAttribute("users", userService.findAll());return "users/list";}
}
3.3 Spring Boot
  • 核心功能
    • 自动配置:根据依赖自动配置 Bean(如引入 spring-boot-starter-web 自动配置 Tomcat)。
    • 起步依赖:通过 starter 简化依赖管理(如 spring-boot-starter-data-jpa)。
    • 内嵌服务器:默认集成 Tomcat/Jetty,无需部署 WAR 文件。
    • Actuator:提供应用监控和管理端点(如 /health)。
  • 典型代码
@SpringBootApplication
public class MyApp {public static void main(String[] args) {SpringApplication.run(MyApp.class, args);}
}

4. 协作流程示例
场景:开发一个用户管理的 REST API
  1. Spring Boot
    • 通过 spring-boot-starter-web 自动配置 Tomcat 和 Spring MVC。
    • 使用 @SpringBootApplication 启动应用。
  2. Spring MVC
    • 定义 @RestController 处理 /api/users 请求。
    • 使用 @GetMapping@PostMapping 映射 HTTP 方法。
  3. Spring Framework
    • 通过 @Service@Repository 管理业务逻辑和数据访问层。
    • 使用 @Transactional 管理数据库事务。

代码结构

// Spring Boot 启动类
@SpringBootApplication
public class Application { ... }// Spring MVC 控制器
@RestController
@RequestMapping("/api/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> getUsers() { ... }
}// Spring 服务层
@Service
public class UserService {@Autowiredprivate UserRepository userRepo;
}// Spring Data JPA 仓库
public interface UserRepository extends JpaRepository<User, Long> { ... }

5. 如何选择?
需求推荐技术栈
传统企业级 Web 应用Spring + Spring MVC + JSP
快速开发 RESTful 微服务Spring Boot + Spring Web MVC + Spring Data
需要高度定制化配置Spring Framework(手动配置 Bean)
云原生、容器化部署Spring Boot + Docker + Kubernetes

6. 常见误区
  • Spring Boot 替代 Spring?
    错误!Spring Boot 是基于 Spring 的扩展工具,核心功能仍依赖 Spring。
  • Spring MVC 只能搭配 Spring Boot 使用?
    错误!Spring MVC 可以独立用于传统 Spring 项目。

总结

  • Spring 是生态基石,提供核心容器和模块。
  • Spring MVC 专注 Web 层开发,构建分层架构。
  • Spring Boot 是生产力工具,简化 Spring 应用的全流程开发。

相关文章:

  • 【爬虫】案例-获取cbh电影
  • 23G显存可以跑多大尺寸的Qwen3?
  • JavaSE第12篇:接口interface
  • Java练习2
  • 解决 Flutter 在 iOS 真机上构建失败的问题
  • 9.idea中创建springboot项目
  • Javascript 中的继承?如何实现继承?
  • docker-vllm运行大模型
  • 高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解
  • 从代码学习深度学习 - 目标检测前置知识(一) PyTorch 版
  • 5.4.2 MVVM例2-用户控件的使用(水在水管中流动的实例)
  • 快速了解Go+rpc
  • MATLAB画一把伞
  • React Three Fiber 详解:现代 Web3D 的利器
  • Vue3取消网络请求的方法(AbortController)
  • jmeter-Beashell获取http请求体json
  • Flutter:组件10、倒计时
  • python如何流模式输出
  • rsync命令详解与实用案例
  • SQLyog中DELIMITER执行存储过程时出现的前置缩进问题
  • 国务院安委会对辽宁辽阳一饭店重大火灾事故查处挂牌督办
  • 日本希望再次租借大熊猫,外交部:双方就相关合作保持密切沟通
  • 京津冀“飘絮之困”如何破解?专家坦言仍面临关键技术瓶颈
  • 文天祥与“不直人间一唾轻”的元将唆都
  • 五一假期上海铁路预计发送446万人次,同比增长8.4%
  • 国家发改委回应美加征关税:典型的单边主义霸凌做法