spring技术体系的演进史

spring

最开始使用 spring 的时候,发现这个特别好用,最主要是把那些对象创建之前通过关键字 new 创建的方式把那些交给 spring ioc 容器来处理,其中 spring 还是使用了工厂模式来创建对应的对象。

然而这个时候需要自己写一堆配置,可能是使用 spring 的开发人员感觉这些配置麻烦,就有了后面的 spring boot。

spring boot

spring boot 最大的好处自己把市面上很多开源组件整合了,对于各种组件使用的 jar 进行了版版本适配,预定了一些开源组件的配置,使用者通过引入对应的 starter 来引入对应的组件,项目在启动时扫描指定的类路径根据自动装配指定的类来匹配对应的配置。这样一来就是开发人员遵循 spring boot 定义的规则来使用对应的组件即可。然而对于一些自定义的一些配置可能预定义的配置不能满足要求,需要自己来实现。

spring boot 1.x

基于 spring 4.x,最开始的一版。在 maven 中央仓库得知,spring 4.0.0 发布于 2013-12-12,spring boot 1.0.0 发布于 2014-04-01,时间差距不到半年。

spring boot 2.x

spring boot 1.x 的升级版

基于 spring 5.x,添加了 spring-webflux。侧重于响应式开发。在 maven 中央仓库得知,spring webflux 5.0.0 发布于 2017-09-28,spring boot 2.0.0 发布于 2018-03-01。

spring boot 3.x

源码基于 jdk 17 构建,即如果想使用这个版本,需要换 jdk 17。相对于 spring boot 2.x 的变化很大,其中如果使用 servlet 容器,包前缀由 javax 变为 jakarta。

https://blog.csdn.net/zlpzlpzyd/article/details/130524514

spring cloud

整合了市面上的开源组件,其中为了整合这些组件,自己定义了一套规则,比如服务注册与发现

其中重要的组件是

spring cloud commons 和 spring cloud context

https://spring.io/projects/spring-cloud-commons

其中重要的功能是服务发现与注册功能的接口定义

spring 官方的开发人员整合了当初正火的 netflix oss,oss 是 open source software 的简称

netflix oss

Netflix Open Source Software Center

https://github.com/Netflix/

广泛使用的组件

熔断 Hystrix

https://github.com/Netflix/Hystrix

从 2018 年开始进入维护模式,即不再更新以及有新版本。官方推荐使用 resilience4j 代替 Hystrix,目前市场上使用的还有阿里开源的 sentinel。

注册中心 eureka

https://github.com/Netflix/eureka

市场使用的还有consul、nacos

网关 zuul

https://github.com/Netflix/zuul

spring 官方开发了一个网关

https://spring.io/projects/spring-cloud-gateway

在 maven 中央仓库得知,spring cloud gateway 1.0.0 发布于 2017-11-22,晚于 spring webflux 5.0.0 发布时间 2017-09-28。

spring cloud gateway 在我接触的项目里用的多,基于 webflux 进行响应式开发。

负载均衡 ribbon

https://github.com/Netflix/ribbon

现在也进入了维护模式,为此 spring cloud 单独开发了一个组件 spring-cloud-loadbalancer。

服务访问

最开始的名字是 feign

XML 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>	

后面迁移到了 openfeign

XML 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

https://spring.io/projects/spring-cloud-openfeign

从 maven 仓库得知,从 2019 年开始 feign 就不更新了,openfeign 代替。

https://blog.csdn.net/u012060033/article/details/127268844

https://blog.csdn.net/justlpf/article/details/125874767

spring cloud alibaba

阿里在自己的开源产品基础上与 spring cloud 进行了整合,毕竟使用 spring 技术体系的人这么多,自己也不想丢了这个蛋糕是吧?

其中整合的组件有

注册中心 nacos

实现了 spring cloud commons 中的接口

熔断 sentinel

消息队列 rocketmq

升级问题

鉴于软件都是开发人员开发的,不可避免会考虑不周,会有一些问题,也就是可能被有的人利用。这个就关系到了升级问题。升级过程中不可避免会带来组件的兼容性问题,其中 spring boot 2.5 往上升级就有问题。

https://blog.csdn.net/zlpzlpzyd/article/details/134203560

https://blog.csdn.net/zlpzlpzyd/article/details/132779246

相关推荐
废柴程序员_熊熊4 分钟前
用 Docker 搭 n8n 私有服务器:2 个容器、382 MB 内存,附可导入的测试工程
后端
T量子永生19 分钟前
Unisoc(紫光展锐) Kernel 6.18 DDK 编译框架详解
linux·运维·spring
niuyueyang22 分钟前
MCP `/mcp/status` Lifecycle 技术方案
java·服务器·数据库
杨运交27 分钟前
086-对象存储模块-基于Spring Boot的文件存储模块监控设计与实现
java·spring boot·后端
利威尔xu40 分钟前
万字详解|Go 进阶(五):sync 包底层:Mutex 自旋 4 次转饥饿,WaitGroup 漏 1 个 Done 挂起 3000 goroutine
后端·golang·并发编程·源码分析·sync
Wang's Blog1 小时前
Java 项目实战:交友项目 - 我的访客:需求说明
java·开发语言·交友
麻瓜code1 小时前
Spring AI 全模块 API 字典一览(1.1.0 版)
人工智能·windows·spring
贾公子1 小时前
检测结果怎么落库——表结构、状态机与三类对账
后端·mysql
136096757232 小时前
LLM 当裁判可靠吗:位置偏见、长度偏见、自我偏好
后端
云析赢指标公式网42 小时前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法