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


1. 三者关系图解
plain 复制代码
+-------------------+
|    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)。
  • 典型代码
java 复制代码
@Service
public class UserService {
    @Autowired
    private UserRepository userRepo;
}
3.2 Spring MVC
  • 核心功能
    • 请求处理 :通过 @Controller@RequestMapping 映射 HTTP 请求。
    • 视图解析:支持 JSP、Thymeleaf、FreeMarker 等模板引擎。
    • 数据绑定 :自动将请求参数绑定到 Java 对象(如 @RequestParam)。
    • REST 支持 :通过 @RestController 构建 RESTful API。
  • 典型代码
java 复制代码
@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)。
  • 典型代码
java 复制代码
@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 管理数据库事务。

代码结构

java 复制代码
// Spring Boot 启动类
@SpringBootApplication
public class Application { ... }

// Spring MVC 控制器
@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getUsers() { ... }
}

// Spring 服务层
@Service
public class UserService {
    @Autowired
    private 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 应用的全流程开发。
相关推荐
冉冰学姐6 小时前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
pjw198809039 小时前
Spring Framework 中文官方文档
java·后端·spring
fu159357456810 小时前
sealos部署Java后端(若依为例)
spring boot
( •̀∀•́ )92010 小时前
Spring Boot 启动报错 `BindException: Permission denied`
java·spring boot·后端
杰克尼10 小时前
苍穹外卖--day10
java·数据库·spring boot·mybatis·notepad++
Darkdreams12 小时前
SpringBoot项目集成ONLYOFFICE
java·spring boot·后端
bropro12 小时前
【Spring Boot】Spring AOP中的环绕通知
spring boot·后端·spring
lhbian12 小时前
【Spring Cloud Alibaba】基于Spring Boot 3.x 搭建教程
java·spring boot·后端
luom010213 小时前
springcloud springboot nacos版本对应
spring boot·spring·spring cloud
zuoerjinshu15 小时前
【spring专题】编译spring5.3源码
java·后端·spring