原创

SPRING发展简述

​从事java语言开发的人员,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的处理请求流程图

这时候对开发者来说最繁琐的就是来自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亦是如此。以上架构图纯粹画了个饼。由两大伟大的公司负责实现。

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

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

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

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

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

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

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【云+社区年度征文】一个hadoop的"helloword"

    上一篇已经介绍了hadoop集群在centos和windows环境的搭建。这篇简单介绍在hadoop环境中简单计算示例。

    三复
  • sharding-jdbc金融支付项目中的应用(技术创作101训练营)

    初次接触shardingsphere是在2017年,那时候还叫sharding-jdbc,属于当当网。当时公司的支付项目改动升级,主要有如下两个问题。

    三复
  • 【云+社区年度征文】腾讯云产品使用“踩坑”记

    最近做公司的中台服务,需要接入外部的一些服务,由于公司属于腾讯系,所以义无反顾选择了腾讯

    三复
  • java框架之Spring 核心框架体系结构

    很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置ja...

    Java知音
  • spring boot 配置属性大全(1)

    gemron的空间
  • 『互联网架构』软件架构-解密电商系统-Spring boot快速开始及核心功能介绍(下)(86)

    至于哪个具体的配置文件会被加载,需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{p...

    IT故事会
  • spring boot 配置属性大全(2)

    gemron的空间
  • springboot,全部配置文件

    DencyCheng
  • Spring系列第1篇:请问各位大佬为何要学spring?

    整个spring系列使用官方最新版本5.2.3.RELEASE,会有大量案例,都是通过maven来管理的,所以maven是必备技能,对这块不熟悉的可以去看一下:...

    路人甲Java
  • Spring 核心框架体系结构

      很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置...

    Java团长

扫码关注云+社区

领取腾讯云代金券