Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入浅出,Spring 框架和 Spring Boot 的故事

深入浅出,Spring 框架和 Spring Boot 的故事

作者头像
芋道源码
发布于 2019-05-09 11:01:25
发布于 2019-05-09 11:01:25
1K2
举报
文章被收录于专栏:芋道源码1024芋道源码1024

Spring 框架可以说是 Java 开发人员使用的最流行的应用程序开发框架之一。它目前由大量提供一系列服务的模块组成。包括模块容器,为构建横切关注点提供支持的面向切面编程(AOP),安全框架,数据存取框架,Web 应用框架和用于模块测试提供支持的类。Spring 框架的所有组件都通过依赖注入粘在一起。依赖注入(也称为控制反转)使设计和测试松散耦合的软件模块变得更容易。

多年来 Spring 框架已变得足够成熟。几乎所有 Java 企业应用需要用到的基础组件都可以在 Spring 框架中找到。但在一个新应用中将所有需要的 Spring 组件整合并配置好并不容易。这包括在 gradle/maven 中设置依赖库,使用 xml、注解或 java 代码配置需要的 Spring Bean。Spring 开发者意识到这里的绝大多数工作是可以可以自动化的,Spring Boot 出现了!

Spring 框架的历史

起点

2002 年 10 月,Rod Johnson 撰写了一本名为 Expert One-on-One J2EE 设计和开发的书。本书由 Wrox出版,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中的存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。

在书中,他展示了如何在不使用 EJB 的情况下构建高质量,可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码。包含许多可重用的 Java 接口和类,如 ApplicationContext和BeanFactory。由于java接口是依赖注入的基本构建块,因此他将这些类的根包命名为com.interface21。

一对一的 J2EE 设计和开发一炮而红。本书免费提供的大部分基础架构代码都是高度可重用的。即使在 15 年后,本书及其原则仍然与构建高质量的 Java Web 应用程序相关。

Spring 诞生

在本书发布后不久,开发者 Juergen Hoeller 和 Yann Caroff 说服 Rod Johnson 创建一个基于基础结构代码的开源项目。Rod,Juergen 和 Yann 于 2003 年 2 月左右开始合作开发该项目 。Yann 为新框架创造了“Spring”的名字。据 Rod 介绍,Spring 是传统 J2EE 的新开始。

200 年 6 月,Spring 2.0 在 Apache 2.0 许可下发布。2004 年 3 月,1.0 版发布。有趣的是,在1.0发布之前,spring 就被开发人员广泛采用。2004 年 8 月,Rod Johnson,Juergen Hoeller,Keith Donald 和Colin Sampaleanu 共同创立了一家专注于 Spring 咨询,培训和支持的公司 interface21。

Yann Caroff 在早期离开了团队,Rod Johnson 在 2012 年离开,Juergen Hoeller 仍然是 Spring 开发团队的积极成员。

Spring 框架的快速增长

自 2004 年 1.0 版本发布以来,Spring 框架迅速发展。Spring 2.0 于 2006 年 10 月发布,到那时,Spring的下载量超过了 100 万。Spring 2.0 具有可扩展的 XML 配置功能,用于简化 XML 配置,支持 Java 5,额外的 IoC 容器扩展点,支持动态语言。

在 Rod 领导下管理 Interface21 项目于 2007 年 11 月更名为 SpringSource。同时发布了 Spring 2.5。Spring 2.5 中的主要新功能包括支持 Java 6 / Java EE 5,支持注释配置,classpath 中的组件自动检测和兼容 OSGi 的 bundle。

2007 年,SpringSource 从基准资本获得了 A 轮融资(1000万美元)。SpringSource 在此期间收购了多家公司,如Hyperic,G2One 等。2009年8月,SpringSource 以 4.2 亿美元被 VMWare 收购。SpringSource 在几周内收购了云代工厂,这是一家云 PaaS 提供商。2015 年,云代工厂转型成了非营利云代工厂。

2009 年 12 月,Spring 3.0 发布。Spring 3.0 具有许多重要特性,如重组模块系统,支持 Spring 表达式语言,基于 Java 的 bean 配置(JavaConfig),支持嵌入式数据库(如 HSQL,H2 和 Derby),模型验证/ REST 支持和对 Java EE 的支持。

2011 年和 2012 年发布了许多 3.x 系列的小版本。2012 年 7 月,Rod Johnson 离开了团队。2013 年 4月,VMware 和 EMC 通过 GE 投资创建了一家名为 Pivotal 的合资企业。所有的 Spring 应用项目都转移到了 Pivotal。

2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。Spring 4.0 是 Spring 框架的一大进步,它包含了对Java 8 的全面支持,更高的第三方库依赖性(groovy 1.8+,ehcache 2.1+,hibernate 3.6+等),Java EE 7 支持,groovy DSL for bean 定义,对 websockets 的支持以及对泛型类型的支持作为注入 bean 的限定符。

2014 年至 2017 年期间发布了许多 Spring 框架 4.xx 系列版本。Spring 4.3.7 于 2017 年 3 月发布。Spring 4.3.8 于 2017 年 4 月发布,并成为 4.x 系列中的最后一个。Spring 框架的下一个延续的主要版本是在 5.0 版本展开。

Spring Boot 的历史

2012 年 10 月,Mike Youngstrom 在 Spring jira 中创建了一个功能请求,要求在 Spring 框架中支持无容器 Web 应用程序体系结构。他谈到了在主容器引导 spring 容器内配置 Web 容器服务。这是 jira 请求的摘录:

我认为 Spring 的 Web 应用体系结构可以大大简化,如果它提供了从上到下利用 Spring 组件和配置模型的工具和参考体系结构。在简单的 main()方法引导的 Spring 容器内嵌入和统一这些常用Web 容器服务的配置。

这一要求促使了 2013 年初开始的 Spring Boot 项目的研发。2014 年 4 月,Spring Boot 1.0.0 发布。从那以后,一些 Spring Boot 版本出来了:

  • Spring boot 1.1(2014 年 6 月) - 改进的模板支持,gemfire 支持,elasticsearch 和 apache solr 的自动配置。
  • Spring Boot 1.2(2015 年 3 月) - 升级到 servlet 3.1 / tomcat 8 / jetty 9,spring 4.1 升级,支持 banner / jms / SpringBootApplication 注解。
  • Spring Boot 1.3(2016 年 12 月) - Spring 4.2 升级,新的 spring-boot-devtools,用于缓存技术(ehcache,hazelcast,redis 和 infinispan)的自动配置以及完全可执行的 jar 支持。
  • Spring boot 1.4(2017年1月) - spring 4.3 升级,支持 couchbase / neo4j,分析启动失败和RestTemplateBuilder。
  • Spring boot 1.5(2017年2月) - 支持 kafka / ldap,第三方库升级,弃用 CRaSH 支持和执行器记录器端点以动态修改应用程序日志级别。
  • Spring boot 2.0(2018 年 03 月)-基于 Java 8,支持 Java 9,支持 Quartz ,调度程序大大简化了安全自动配置,支持嵌入式 Netty

Spring Boot 简单性使 java 开发人员能够快速大规模地采用该项目。Spring Boot 可以说是在 Java 中开发基于 REST 的微服务 Web 应用程序的最快方法之一。。

Spring IO 和 Spring Boot

2014 年 6 月,Spring io 1.0.0 发布。Spring io 代表应用程序库之间的一组预定义的依赖关系。这意味着如果使用特定的 Spring IO 版本创建项目,则不再需要定义库的版本。即使是 Spring Boot 启动项目也是这个 Spring IO 的一部分。例如,如果你使用的是 spring io 1.0.0,则在添加启动器项目的依赖关系时,不需要指定 spring 启动版本。它会自动假定它是spring boot 1.1.1.RELEASE。

概念上,spring io 由模块的基础层和执行层域特定的运行时(DSR)组成。基础层代表核心弹簧模块和第三方依赖关系的策划清单。Spring Boot 是 Spring IO 提供的执行层 DSR 之一。因此,现在有两种主要的方法来构建应用程序,

  • 使用或不使用 spring io 直接使用 Spring Boot。
  • 使用所需 Spring 模块的 Spring IO。

请注意,通常每当发布新的 Spring 框架版本时,都会触发新的 Spring 启动版本。这将反过来引发新的Spring Boot 版本。

2015 年 11 月,Spring io 2.0.0 发布。这提供了一套更新的依赖项,包括 Spring Boot 1.3。2016 年 7月,Spring io 团队决定使用按字母顺序排版的方案。Spring IO 为此使用城市名称。在字母版本方案中,新名称表示依赖库的次要和主要升级。

2016 年 9 月,雅典发布了首个按字母顺序排列的城市命名的 Spring io 平台版本。它包含 Spring Boot 1.4 和其他第三方库升级。此后,雅典发布了多个服务版本(SR1,SR2,SR3和SR4)。

2017 年 3 月,最新的 Spring io平台(Brussels-SR1)发布。它使用最新的 Spring Boot 版本 1.5.2。下一个 Spring io 平台是开罗计划推出的 spring boot 2.0 和 spring framework 5.0。

Spring 时间线图表

时间线



本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 芋道源码 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
为什么我的连接不成功呢smbclient -L //172.168.20.177do_connect: Connection to 172.168.20.177 failed (Error NT_STATUS_IO_TIMEOUT)
为什么我的连接不成功呢smbclient -L //172.168.20.177do_connect: Connection to 172.168.20.177 failed (Error NT_STATUS_IO_TIMEOUT)
回复回复点赞举报
这个漏洞一定要139和445同时开启才能使用吗
这个漏洞一定要139和445同时开启才能使用吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
『互联网架构』软件架构-spring源码之spring结构概述(八)
spring-core和spring-beans模块是[Spring框架的基础],包括控制反转和依赖注入等功能。BeanFactory是工厂模式的微妙实现,它移除了编码式单例的需要,并且可以把配置和依赖从实际编码逻辑中解耦。
IT架构圈
2019/03/06
8650
『互联网架构』软件架构-spring源码之spring结构概述(八)
从萌芽到巨人: 揭秘Rod Johnson与Spring框架的故事
  在这个充满创意和技术追求的世界中,有一个名为 Spring 的框架,它孕育了无数创新和成功的故事。这是一个关于持续进化和超越自我的故事,一个激励人心的旅程,由一位富有远见的程序员和他的团队引领着。从最初的概念到如今的成熟框架,Spring 经历了无数次变革和改进,最终成为了 Java 开发领域的瑰宝。
不一样的科技宅
2023/09/01
4540
从萌芽到巨人: 揭秘Rod Johnson与Spring框架的故事
当音乐学博士搞起编程,用一本书改变了Java世界!
前言 说到Spring,也许现在的开发者们最先想到的是 Josh Long 超快的语速与现场代码能力,让很多Java开发者折服。 然而Spring的历史上,最传奇的还是要数其创始人:Rod Johnson! 先不说别的,看到他的学历,你就震惊的了,悉尼大学的音乐学博士!不要惊讶,不是计算机! 也许就是因为这样一颗理性思维与艺术细胞结合的秃顶大佬,才能造就Spring这样的产物吧。 Rod Johnson Rod Johnson,就是上图这位头顶略微地中海的男子,但是秃脑袋瓜并没有让Rod Johnso
程序猿DD
2023/04/04
3050
当音乐学博士搞起编程,用一本书改变了Java世界!
JavaEE之Spring框架初解(浅谈)
想必对于Java程序员来说,Spring这个词并不陌生,如果你Java基础刚学习完成,想开启框架的学习,或许需要好好了解一下它。毕竟,知己知彼,百战百胜。
JanYork_简昀
2022/06/12
2940
JavaEE之Spring框架初解(浅谈)
初识Spring
接触过Java开发的小伙伴们,应该都或多或少听说过Spring框架(Spring框架通常指Spring Framework),而且大部分的公司都是使用着Spring全家桶框架。之所以说是全家桶,是因为现在Spring系列的框架很多,常见的例如Spring Boot、SpringMVC、Spring Cloud、Spring Security等等。但是学习Spring系列的框架,我们都是先从 Spring Framework 开始学起的,至于为什么要先从 Spring Framework 开始学起,可以参考我之前写的一篇关于JavaWeb程序架构模式的演进的文章。
端碗吹水
2020/09/23
3940
初识Spring
走进Java接口测试之流行框架SpringBoot
说起 SpringBoot 不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spring 大家族,而是 Spring Boot 的诞生和 Sping 框架的发展息息相关。
玖柒的小窝
2021/09/18
6990
走进Java接口测试之流行框架SpringBoot
走进Java接口测试之流行框架SpringBoot(概念篇)
说起 SpringBoot 不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spring 大家族,而是 Spring Boot 的诞生和 Sping 框架的发展息息相关。
高楼Zee
2019/07/17
1.4K0
走进Java接口测试之流行框架SpringBoot(概念篇)
《Spring敲门砖之基础教程第一季》 第一章 概要介绍
百度百科say: Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。点击查看 WiKi say: Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE
用户1257215
2018/01/30
6500
《Spring敲门砖之基础教程第一季》 第一章 概要介绍
来聊一聊 Spring 框架的前生今世
这里的 Pivotal 团队肯定就是 Spring Boot 的研发团队了,那么这个 Pivotal 团队到底是个什么来头呢?和 Spring 又有那些关系?不着急且听我慢慢道来。
美码师
2019/01/23
1.5K0
Spring Boot指南
欢迎投稿 erixhao作品 Spring Boot是由Pivotal公司(Spring目前隶属于Pivotal)于2014发布的一个框架,如上图官网所示其设计目的是简化新Spring应用搭建及开发过程,尤其大幅减少Spring被誉为诟病的XML配置,并且做到应用立即可运行(just run)同时高效支持Micro Service。 总目录 Spring创始人Rod Johnson Spring之前世今生 Spring Boot Overview Quick Start Spring Boot App
java达人
2018/01/31
1.9K0
Spring Boot指南
Spring boot教程离线版 PDF下载
Spring框架是 Java 平台的⼀个开源的全栈(Full-stack)应⽤程序框架和控制反转容器实现,⼀般被直接称为Spring。该框架的⼀些核⼼ 功能理论上可⽤于任何Java应⽤,但Spring还为基于Java企业版平台构建的Web应⽤提供了⼤量的拓展⽀持。Spring没有直接实现任何 的编程模型,但它已经在Java 社区中⼴为流⾏,基本上完全代替了企业级JavaBeans(EJB)模型。
从大数据到人工智能
2022/04/25
2K0
Spring Boot 2.0正式版发布啦,你准备好升级了吗
北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布,目前已在 GitHub 上发布了 v2.0.0.RELEASE 版本的下载地址,读者可以点击链接去下载。不过由于同步至 Maven 仓库出错,使用Maven方式来使用Spring Boot 2.0暂时会有一些问题。
xiangzhihong
2022/11/30
7070
Spring认证-Spring核心基础教程详解?
Spring 框架是一个开源 Java 平台,它为非常容易和非常快速地开发健壮的 Java 应用程序提供了全面的基础设施支持。Spring 框架最初由 Rod Johnson 编写,并于 2003 年 6 月在 Apache 2.0 许可下首次发布。本教程是基于 2015 年 3 月发布的 Spring Framework 4.1.6 版编写的。
IT胶囊
2021/08/11
3490
【Spring】 ——初识Spring
Spring是一个开源的Java应用框架,它提供了一套全面的解决方案,用于开发企业级Java应用程序。Spring框架旨在简化Java开发,并提供了一种灵活且非侵入式的编程模型,帮助开发人员构建可扩展、模块化和可维护的应用程序。
终有救赎
2023/10/16
4070
【Spring】 ——初识Spring
Spring入门
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
C you again 的博客
2020/09/15
3820
Spring Cloud的前世今生
大家都知道Spring是2002年Rod Johnson 开发的框架,他成立了一个公司运营这玩意,当时公司叫interface 21;
pollyduan
2019/11/04
1.9K0
第1章 Spring Boot史前简述小结参考资料
大约20年前,程序员们使用“企业级Java Bean”(EJB)开发企业应用,需要配置复杂的XML。
一个会写诗的程序员
2018/08/20
6610
第1章 Spring Boot史前简述小结参考资料
「Spring认证」Spring 框架概述
Spring 是最流行的企业 Java 应用程序开发框架。全球数以百万计的开发人员使用 Spring Framework 来创建高性能、易于测试和可重用的代码。
IT胶囊
2021/08/12
5190
「Spring认证」Spring 框架概述
深度剖析 Spring 框架在 Java 应用开发中的优势与应用
Spring 在大小和透明度方面都非常轻巧。Spring Framework 的基本版本大小约为 2MB。
小万哥
2023/08/09
2860
深度剖析 Spring 框架在 Java 应用开发中的优势与应用
Spring Cloud 上手实战-架构解析及实作
目前为止绝大部分的web应用软件采用单体应用,所有的应用的用户UI、业务逻辑、数据库访问都打包在一个应用程序上。
用户5442762
2019/06/24
9640
Spring Cloud 上手实战-架构解析及实作
相关推荐
『互联网架构』软件架构-spring源码之spring结构概述(八)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档