前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SPRING发展简述

SPRING发展简述

原创
作者头像
三复
修改2020-10-30 11:29:13
7300
修改2020-10-30 11:29:13
举报

​从事java语言开发的人员,spring是一个绕不开的话题。这里我就简述下spring的发展。语句尽量用最通俗,最浅显的话语表述,不完整处还请谅解,请自行查询补全。

spring的发展时间表

spring发展时间表
spring发展时间表

1.spring

spring最核心的两个概念,也可以说是思想,就是IOC和AOP,可以说是spring的两大基石。其中的IOC又可以说是spring大厦基石中的核心

IOC(Inversion of Control,控制反转或者依赖注入):将原来需要代码中手动处理的对象之间的依赖关系交给了spring容器。(java语言编程的核心就是万物皆对象,你说这个有多重要)

AOP(Aspect Oriented Programming,面向切面编程):在不影响原有代码的情况下,在原有执行流程中织入用户想完成的逻辑。(随时可以横插一杠而对方无感知,你说这个有多爽)

可以说正是有了spring,java语言才能被普通开发者广泛接受,而spring也仿佛成了java的代名词。

这个时候spring还需要其他组件的辅助才能更好完成一个完整的项目,最经典的框架就是SSH,spring+Struts2(Struts2和Struts差距很大)+hibernate。经典的三层模型。

Struts2管理和web层的交互,spring则主要处理业务逻辑,hibernate主管与数据层的交互。从这个架构来看,当时项目分层的思想已经很成熟了。

2.springmvc

spring不是吃素的,岂能让其他势力与自己三分天下,这时候开始了大一统,springmvc应运而生。

springmvc的处理请求流程图
springmvc的处理请求流程图

这时候对开发者来说最繁琐的就是来自xml文件的各种配置,从后台与数据库的连接到与前端视图的制定,初学者往往不知所措,spring根据这些问题又提出了注解大于配置的思想,而后大量的注解应运而生。注解虽然简化了配置和简洁了代码,但是对初学者来说,变成了知其然不知其所以然,遇到bug往往根据线索也找不到问题源头,被弄得云里雾里。

3.springboot

现代社会是崇尚效率的,为了适应时代的发展,spring重磅推出了springboot。能在一分钟内生成最基础的项目工程,这得归功于springboot里有个很棒的思想,约定大约配置,相当于项目有了默认配置。理解接受了这个,你就可以全方位把自己项目中的配置交给spring来管理了,就像原来把对象和对象之间的依赖关系交给spring一样。

项目开始开发的三板斧:1.引入包 2.注解 3.配置。加入其它功能组件,步骤变得简单许多。

这时候比较经典的开发环境就变成了在idea下git+maven+springboot。

随着项目业务的扩大,原有的单体架构已经不能满足业务的发展需求,在原有spring的基础上,各种分布式中间件应运而生,dubbo是其中的典型代表。各种多个单体应用间的交互需要统一的管理,这个时候就有版本仲裁中心的概念,zookeeper就是其中最典型的代表。

4.springcloud

但spring不会容忍其他势力来瓜分自己的地盘,springcloud应运而生,所以springcloud就是spring一系列的工具集。

springcloud的原生架构图
springcloud的原生架构图

牛逼的语言定义标准,springcloud亦是如此。以上架构图纯粹画了个饼。由两大伟大的公司负责实现。

Netflix公司的springcloud(https://spring.io/projects/spring-cloud-netflix),包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。

  • Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
  • Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
  • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
  • Feign:基于Ribbon和Hystrix的声明式服务调用组件;
  • Zuul:API网关组件,对请求提供路由及过滤功能。
Netflix公司的springcloud
Netflix公司的springcloud

Alibaba公司的 springcloud Alibaba(https://spring.io/projects/spring-cloud-alibaba#overview)。

  • Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Dubbo:在国内应用非常广泛的一款高性能 Java RPC 框架。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。
Alibaba公司的 springcloud
Alibaba公司的 springcloud

这两大公司把开发中的关键组件都实现了。

开发语言的流行壮大依靠组件的发展,而组件的发展类似于人类语言的发展历程。而其中java标准的制定就像文字的出现,虽然口音不同,但大家还是能根据书面语言相互沟通,而spring可能就是中文里的普通话,能一统java市场。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring的发展时间表
    • 1.spring
      • 2.springmvc
        • 3.springboot
          • 4.springcloud
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档