首页 > 其他分享 >Spring、SpringBoot、SpringCloud关系是什么?你真的需要SpringCloud吗?

Spring、SpringBoot、SpringCloud关系是什么?你真的需要SpringCloud吗?

时间:2024-12-13 11:02:49浏览次数:8  
标签:Spring 服务 SpringBoot spring 配置 Boot SpringCloud Cloud

目录

Spring核心能力:

控制反转(IOC):

依赖注入(DI):

面向切面编程(AOP):

Spring Boot核心能力

约定优于配置:

嵌入式容器:

自动配置:

丰富的starter:

Spring Cloud的特点

三者关系

你真的需要SpringCloud吗?


spring 的第一个版本发布于2002年,他出现的使命就是替换EJB(J2EE规范,理论上很先进,开发效率低,且性能不好,已成功被spring彻底打败)。

springboot 诞生于2014年,他出现的使命就是简化spring的用法,早期spring bean等配置需要配置到xml中,这个思路应该很大程度来源于EJB 。其实这个时候微服务架构已经很流行了,苦于java没有全家桶方案,各厂商就各显神通,东拼西凑,rpc框架,注册中心、业务网关等组件都是各式各样的,这个时候程序员要说做过微服务是有很大溢价空间的。

Spring Cloud  为微服务而生,2016年珊珊来迟,经过几年发展,早已成了java微服务架构的标配了,基本上打败了市面上所有其他方案。

Spring核心能力:

控制反转(IOC):

Spring通过IoC容器实现了对象之间的解耦,使得对象之间的依赖关系可以通过配置文件或注解来定义,而不是在代码中硬编码。
IoC容器负责对象的创建、管理和销毁,以及对象之间依赖关系的注入,从而降低了代码的耦合度和复杂性。


依赖注入(DI):

依赖注入是IoC的一种实现方式,它允许开发者在运行时动态地将依赖对象注入到目标对象中。


面向切面编程(AOP):

spring提供了AOP的支持,允许开发者在不修改原有代码的情况下,增加新的功能或行为。
AOP通过将横切关注点(如日志、事务管理等)与业务逻辑代码分离,提高了代码的可维护性和可重用性。

Spring Boot核心能力

约定优于配置:

Spring Boot通过一系列约定来简化配置过程,使得开发者可以更加专注于业务逻辑的实现。

嵌入式容器:

Spring Boot内嵌了Tomcat、Jetty等Web服务器,使得应用程序可以作为一个独立的可执行JAR或WAR文件运行,而不需要单独的服务器或容器。

自动配置:

Spring Boot通过检查项目的类路径、属性设置和其他条件,自动为开发者配置Spring应用程序。

丰富的starter:

Spring Boot提供了大量的starter,这些starter是预先配置好的Maven依赖项,可以简化Maven配置,并快速集成第三方库和工具。

Spring Cloud的特点

Spring Cloud是基于Spring Boot的分布式微服务架构解决方案。它提供了一系列的服务治理、熔断、限流等功能,使得开发者可以更加便捷地构建出高可用、高并发的微服务应用。

其主要特点包括Spring Cloud提供了一系列的组件和工具,用于支持微服务的开发和部署,包括服务注册与发现、负载均衡、断路器、网关、配置中心等。

提供了很多容错和故障恢复的机制,如服务熔断、降级、限流、重试等,保证了系统的高可用性和容错性。

三者关系

他们三者是层层递进的关系。

spring提供了IOC 、DI 、AOP等底层核心能力,所有面相对象语言都必须解决这3个问题,否则代码就是一团乱麻。
springboot感觉是springcloud的铺垫,从时间上也可以看出来,spring发布12年后才有springboot, springboot发布2年后就有了springcloud 。如果是单体应用,直接使用spring基于xml的配置bean问题不大; 如果是开发微服务,大量子模块以及他们的bean需要依赖配置,那么就会原地爆炸。
Spring Cloud为微服务而生,微服务全家桶,基于springboot,让开发者拿来即用,免去了复杂配置的烦恼。

你真的需要SpringCloud吗?

其实大部分项目都不需要微服务,下面从不同维度对比分析:

1.项目阶段:

很多创业型项目在0到1验证阶段是不适合微服务的,这阶段资金少、人员少,甚至缺少技术优秀的人,开发人员都应该集中精力做业务开发。

如果用微服务,那么最低配的微服务也需要RPC框架、注册中心、网关,这些都需要占用很多机器成本,这些组件还需要花费程序员很多时间,碰到技术差点的,很多时间都花在解决这些基础组件问题上。

很多技术人员在0到1的阶段都会向老板忽悠:微服务好,可以保证支撑后续业务上量。这完全是胡扯:第一,0到1阶段较少投入情况下,微服务架构100%不可能做好;第二:0到1基本上就是反复调方向验证,就是小步快跑,不适合用很重的架构,业务跑通后,有资源了再重构; 市值100万的公司不可能提前干1个亿的活。

2. 复杂的B端业务:

B端业务大部分都是流量小、业务复杂。一个真正的微服务项目是需要拆库的,B端业务数据关联都很强,现阶段数据库分布式事务是没有真正解决方案的,拆库后数据一致性会是非常大的问题。

数据聚合查询对B端业务也是核心诉求,微服务后解决方案基本上就是再把数据合起来,代价非常大。

成本:微服务需要很多机器,如果B端业务微服务后,某个客户基于安全考虑提出私有化部署,那么基本上也只能是凉凉了。

3.微服务适合的场景:

发展起来的中大型互联网项目。

a.钱多: 能找到足有多的优秀的人,把微服务架构玩透,让微服务产生正向收益,而不是成为负担。

b.人多: 人多后,在一个项目写代码,相互影响,容易出问题,这时候模块化责任明确,方便管理。

c. 流量大: 微服务模块化后,可以对局部模块扩缩容,局部优化甚至重构,不会影响整体。

d.需求多迭代频繁: 各个模块自己独立开发、测试、发版,互不影响。

标签:Spring,服务,SpringBoot,spring,配置,Boot,SpringCloud,Cloud
From: https://blog.csdn.net/zfj321/article/details/144440849

相关文章

  • 计算机毕业设计 | SpringBoot+vue毕业设计系统 毕业论文设计项目答辩管理(附源码+论文
    1,绪论1.1选题背景目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平,影响人们的生活质量。计算机的发展,不管是从硬件还是软件,都有很多技术储备,每年都有很多的技术和软件产生,纵观各个领域,无一不用互联网软件,办公用的......
  • 计算机毕业设计 | SpringBoot+vue医疗挂号管理系统 医院就诊业务办理平台(附源码+论文
    1,绪论1.1选题背景目前整个社会发展的速度,严重依赖于互联网,如果没有了互联网的存在,市场可能会一蹶不振,严重影响经济的发展水平,影响人们的生活质量。计算机的发展,不管是从硬件还是软件,都有很多技术储备,每年都有很多的技术和软件产生,纵观各个领域,无一不用互联网软件,办公用的......
  • Java-25 深入浅出 Spring - 实现简易Ioc-01 Servlet介绍 基本代码编写
    点一下关注吧!!!非常感谢!!持续更新!!!大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html案例思路参考来源来自网络视频,这里的案例是转账的案例。这里我们直接使用接口的方式,就不实现具体的页面了,我们直接通过接口调用的方式来模拟这一块。最终将实......
  • 132Java基于SpringBoot的西山区家政服务网站设计与开发-java vue.js idea
    所需该项目可以在最下面查看联系方式,为防止迷路可以收藏文章,以防后期找不到项目介绍132Java基于SpringBoot的西山区家政服务网站设计与开发-javavue.jsidea系统实现截图技术栈介绍JDK版本:jdk1.8+编程语言:java框架支持:springboot数据库:mysql......
  • 150Java基于SpringBoot的高校实验室管理系统微信小程序-java vue.js idea
    所需该项目可以在最下面查看联系方式,为防止迷路可以收藏文章,以防后期找不到项目介绍150Java基于SpringBoot的高校实验室管理系统设计与实现-javavue.jsidea系统实现截图技术栈介绍JDK版本:jdk1.8+编程语言:java框架支持:springboot数据库:mysql版本不限......
  • 【计算机毕业设计选题】最新毕业设计推荐----基于SpringBoot的超市商品推荐系统的设计
    博主介绍:原计算机互联网大厂开发,十年开发经验,带领技术团队几十名,专注技术开发,计算机毕设实战导师,专注Java、Python、小程序、安卓、深度学习和算法开发研究。主要服务内容:选题定题、开题报告、任务书、程序开发、文档编写和辅导、文档降重、程序讲解、答辩辅导等,欢迎咨询~......
  • 【计算机毕业设计选题】最新毕业设计选题----基于SpringBoot的宿舍管理系统的设计与实
    博主介绍:原计算机互联网大厂开发,十年开发经验,带领技术团队几十名,专注技术开发,计算机毕设实战导师,专注Java、Python、小程序、安卓、深度学习和算法开发研究。主要服务内容:选题定题、开题报告、任务书、程序开发、文档编写和辅导、文档降重、程序讲解、答辩辅导等,欢迎咨询~......
  • SpringCloud Nacos (docker 搭建 && 项目运行) 基于 Cloud 2022 版本
    一、使用docker安装nacos基础镜像1、安装docker(省略)2、创建docker-compose.ymlversion:'3.7'services:nacos:image:nacos/nacos-server:latestcontainer_name:nacosenvironment:-MODE=standalone#单机模式-PREFER_HOST_MODE=hos......
  • 基于Spring Boot智能无人仓库管理
      运行环境环境说明:开发语言:java框架:springboot,vueJDK版本:JDK1.8数据库:mysql5.7+(推荐5.7,8.0也可以)数据库工具:Navicat11+开发软件:idea/eclipse(推荐idea)Maven包:Maven3.3.9+系统实现5.1员工信息管理如图5.1显示的就是员工信息管理页面,此页面提供给管理......
  • Spring Cloud 搭建 Nacos (windows )
    一、Nacos服务搭建1、下载安装:Windows:在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码:GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/nacos/releases解压后出现目录:说明:(默认端口8848)bin:启动脚本......