Spring、SpringMVC、SpringBoot、SpringCloud 之间的关系

332 阅读3分钟

「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

对于搞后端开发的同志们,对Spring家族一定不陌生。Spring 全家桶了为了解决不同场景的问题,逐渐演化出多套生态环框,如:Spring、SpringMVC、SpringBoot、SpringCloud

graph TD
SpringCloud --> SpringBoot --> Spring
SpringBoot --> SpringMVC
SpringMVC --> Spring
Spring

Spring 一站式的轻量级的java开发框架,采用容器化管理,创建各种 Bean 实例,并维护着 bean 与bean之间的关系。

两大核心利器:

  • IOC(控制反转)
  • AOP(面向切面) 为Java应用程序开发提供了全面的基础架构支持。包含很多开箱即用的模块,如:SpringJDBC、SpringSecurity、SpringAOP、SpringORM,提高了应用开发的效率。
Spring MVC

一个网站通常有前台页面和后台处理逻辑,为了打通这层关系,衍生出类似 struts2 框架。专门解决前台页面与后端数据处理之间的映射关系。

Spring MVC是 Spring 的 web 框架。

SpringMVC = Struts2 + Spring。 通过Dispatcher Servlet、ModelAndView和View Resolver,开发web应用变得很容易。主要针对的是带页面的系统开发,URL路由、Session、模板引擎、静态Web资源等等。

Spring MVC 框架与其他 Web MVC 框架一样,是请求驱动的,围绕一个中央 Servlet 设计,该 Servlet 将请求分派给控制器并提供其他功能以促进 Web 应用程序的开发。然而,Spring 的 DispatcherServlet 不仅仅如此。它与 Spring IoC 容器完全集成,因此允许您使用 Spring 的其他功能。

Spring Boot

Spring 配置复杂,xml文件有大量的bean定义,开发起来繁琐。

另外,分布式时代,微服务盛行,为了统一后端框架,便于运维维护,开始推行 Spring Boot。

Spring Boot 是Spring框架的扩展,提供更加 丰富的注解。

同时,将Servlet容器集成到框架中,如:Tomcat、Jetty、Undertow,我们开发时不需要再手动在 IDEA 中配置 tomcat 的路径,只需要main函数启动。

Spring Boot 框架相对于 Spring MVC 框架来说,更专注于后端接口,不开发前端页面,推崇前后分离。

根据 约定胜于配置 原则,与市场主流的开源框架打通, 设计了 Starter 和 AutoConfiguration 机制,简化配置流程,通过简单的jar包引入,快速具备组件集成能力。大大提高了程序员的开发效率。

Spring Cloud

分布式时代,系统间需要打通、组成集群,从而具备更大吞吐能力。我们会将一个单体项目拆分成多个微服务,每个微服务系统独立技术选型、开发、部署上线,各个微服务之间打通、相互协调,从而完成全流程服务。

当然,为了降低不同微服务系统间的差异化接入成本,通常都是统一基于 Spring Boot 构建微服务系统。

Spring Cloud 将多个 Spring Boot 单体微服务整合、管理,是一系列框架的有序集合,利用Spring Boot的开发便利性简化了分布式系统基础设施的开发。

总结
  • Spring框架就像一个家族,Spring是轻量级的开发框架,有两大核心利器IOC和AOP,IOC提供了依赖注入的容器,AOP解决了面向切面编程,在这两个的基础上,又衍生了其它的高级功能,有众多的衍生产品。
  • SpringMVC是基于servlet的MVC框架。解决了Web开发问题。但是配置相当复杂。
  • SpringBoot为了简化开发者的使用,简化了SpringBoot的配置。SpringBoot专注于后端开发,与前端解耦。
  • SpringCloud关注与微服务的开发,SpringCloud主要对于多个微服务系统的整个和管理。相当于多个SpringBoot的单体微服务。