产品中心PRDUCTS DISPLAY

联系我们

联系人:张生

咨询热线:400-123-4657

传真:+86-123-4567

手机:13800000000

邮箱:admin@youweb.com

地址:广东省广州市天河区88号

在线咨询

行业资讯

您现在的位置是: 首页 > 新闻动态 > 行业资讯

阿里一面问题:请简要解释一下 Spring、SpringMVC、SpringBoot、SpringCloud 之间的关系。

大家好,我是Tom哥~

我是一位从事后端开发的同学,对于Spring家族一定非常熟悉。为了解决不同场景的问题,Spring 演化出了多套生态环框,包括 Spring、SpringMVC、SpringBoot、SpringCloud。它们之间的关系是:Spring 是一站式的轻量级的Java开发框架,采用容器化管理,创建各种Bean实例,并维护着Bean之间的关系。Java应用程序开发有两个核心利器:IOC(控制反转)和AOP(面向切面),它们为开发提供了全面的基础架构支持。这个框架包含了许多现成可用的模块,例如:SpringJDBC、SpringSecurity、SpringAOP和SpringORM,这些模块可以大大提高应用程序开发的效率。

Spring MVC

框架通常用于搭建网站的前后台逻辑,实现前端页面展示和后端数据处理的通信。其类似于 struts2 框架,旨在解决前后台交互所需的问题。针对前台页面与后端数据处理之间的映射关系进行专门解决。

显然,Spring 家族为了保持其生态地位,融合了这种 MVC 模式的优势并进行了改进,于是就产生了 Spring MVC

Spring MVC是 Spring 的网页框架。利用 Dispatcher Servlet、ModelAndView 和 View Resolver,开发 Web 应用现在非常轻松。重点是针对带有页面的系统开发,包括URL路由、Session管理、模板引擎和静态Web资源等方面。SpringMVC = Struts2 + Spring处理流程:\nSpring MVC框架与其他Web MVC框架相似,是基于请求的,围绕一个中心Servlet设计,该Servlet将请求分派给控制器并提供其他功能来推动Web应用程序的开发。然而,Spring 的 DispatcherServlet 不仅仅只是这样。它已经完全与 Spring IoC 容器集成,因此您可以方便地使用 Spring 的其他功能。

Spring Boot

简化了Spring的配置,减少了繁琐的xml文件,使开发更加简单。在分布式时代中,微服务变得流行起来。为了统一后端框架并方便运维维护工作,开始推广使用Spring Boot。Spring Boot 是基于 Spring 框架扩展而成的,提供了更加丰富的注解。之前我们曾经介绍了 Spring Boot 常用注解,可以参考一下。同时,Spring Boot 还集成了 Servlet 容器,比如 Tomcat、Jetty、Undertow,这样我们在开发时就无需手动在 IDEA 中配置 Tomcat 的路径了,只需要通过 main 函数启动即可。相较于Spring MVC框架,Spring Boot框架更加专注于后端接口的开发,而不涉及前端页面的开发,并且倡导前后端分离的开发模式。根据「约定胜于配置」的原则,我们与市场上主流的开源框架进行了对接,并设计了 Starter 和 AutoConfiguration 机制,以简化配置流程。通过引入一个简单的jar包,就可以快速地集成各种组件能力。极大地提高了软件开发人员的工作效率。下面是常用的 Starter 组件的列举:\n- spring-boot-starter:核心启动器,包含自动配置、日志和YAML\n- spring-boot-starter-web:构建Web应用,使用 Tomcat 作为内嵌容器\n- spring-boot-starter-amqp:通过 spring-rabbit 来支持 AMQP 协议(高级消息队列协议)\n- spring-boot-starter-aop:面向方面的编程,即 AOP其中 spring-aop 和 AspectJ 都被包含在内。而 spring-boot-starter-groovy-templates 则支持 Groovy 模板引擎。而 spring-boot-starter-data-redis 可以使用 Redis 和 Spring Data Redis。还包括以下组件:\n- Jedis客户端:用于Redis的Java客户端库。\n- Spring Boot Starter Data Elasticsearch:支持Elasticsearch搜索和分析引擎。\n- Spring Boot Starter Data JPA:支持Java Persistence API。\n- Spring Boot Starter Data MongoDB:支持MongoDB数据。\n- Spring Boot Starter Logging:Spring Boot默认的日志框架Logback。\n- 还有更多其他组件。以下是一些历史文章,不一一列举:\n- 一篇关于如何理解Spring Boot各模块组件依赖关系的文章。\n- 一篇关于在分布式时代中,系统之间的互通和集群组成的重要性的文章。这有助于提高系统的吞吐能力。我们的做法是将单体项目拆分为多个微服务,每个微服务系统独立进行技术选型、开发和部署,并建立相互打通、协调配合的关系,从而能够完成全流程服务。我们会把一个独立的项目拆分成多个微服务,每个微服务都有独立的技术选择、开发和部署,它们之间需要打通和互相协调,才能完成整个服务流程。当然,为了降低不同微服务系统间的接入成本差异,通常都会统一使用Spring Boot来构建微服务系统。Spring Cloud 是一套基于 Spring Boot 的框架集合,可用于整合和管理多个 Spring Boot 微服务。利用 Spring Boot 开发的便捷性,Spring Cloud 简化了分布式系统基础设施的开发。Spring Cloud 是一个关注微服务整合和管理服务治理的框架,具有丰富的生态系统,提供了多种组件框架,包括:服务注册和发现、服务间调用、负载均衡、网关、配置中心、断路器、消息总线和监控等。网址链接:https://www.springcloud.cc/\n最后总结:\n1、Spring 框架有很多衍生产品,例如Spring Boot 、Spring security、jpa等。但他们的基础都是Spring框架的IOC、AOP等核心功能。IOC提供了依赖注入容器,AOP则解决了面向切面编程的问题。在这两个基础上,还可以实现其他高级功能。 \n2、Spring MVC是一个基于Servlet的MVC框架,专门解决Web开发问题。但是由于Spring框架的配置相对复杂,涉及各种XML、JavaConfig和servlet的处理,所以使用起来比较繁琐。 \n3、为了简化开发者的使用,创造性地推出了Spring Boot框架。Spring Boot采用约定优于配置的原则,简化了Spring MVC的配置流程。与Spring MVC不同的是,Spring Boot专注于微服务接口的开发,并且与前端解耦。Spring Boot与Spring MVC不同之处在于,Spring Boot专注于微服务接口的开发,以及与前端的解耦。尽管Spring Boot也可以用于Spring MVC前后端一起开发,但这并不符合Spring Boot框架最初的设计目的。在Spring Cloud框架中,与Spring Boot类似,其关注点在于微服务的开发。Spring Cloud 更侧重于整合和管理多个微服务系统,相当于将多个单体微服务的 Spring Boot 框架进行整合。本文转载自微信公众号「微观技术」。

在线客服

关注我们 在线咨询 投诉建议 返回顶部