Spring 历史

发布时间:2026/9/14 22:34:02

Spring 历史 说起 Spring Boot 我们不得不先了解一下 Spring 这个企业不仅因为 Spring Boot 来源于 Spirng 大家族而且 Spring Boot 的诞生和 Sping 框架的发展息息相关。时间回到2002年当时正是 Java EE 和 EJB 大行其道的时候很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿并不是所有的项目都需要使用 EJB 这种大型框架应该会有一种更好的方案来解决这个问题。为了证明他的想法是正确的于2002年10月甚至写了一本书《 Expert One-on-One J2EE 》介绍了当时 Java 企业应用程序开发的情况并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。在书中他展示了如何在不使用 EJB 的情况下构建高质量可扩展的在线座位预留系统。为了构建应用程序他编写了超过 30,000 行的基础结构代码项目中的根包命名为 com.interface21所以人们最初称这套开源框架为 interface21也就是 Spring 的前身。他是谁呢他就是大名鼎鼎的 Rod Johnson 下图, Rod Johnson 在悉尼大学不仅获得了计算机学位同时还获得了音乐学位更令人吃惊的是在回到软件开发领域之前他还获得了音乐学的博士学位。现在 Rod Johnson 已经离开了 Spring 成为了一个天使投资人同时也是多个公司的董事早已走上人生巅峰。在这本书发布后一对一的 J2EE 设计和开发一炮而红。这本书免费提供的大部分基础架构代码都是高度可重用的。 2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为 Spring ,据 Rod Johnson 介绍 Spring 是传统 J2EE 新的开始。随后 Spring 发展进入快车道。2004 年 03 月1.0 版发布。2006 年 10 月2.0 版发布。2007 年 11 月更名为 SpringSource同时发布了 Spring 2.5。2009 年 12 月Spring 3.0 发布。2013 年 12 月Pivotal 宣布发布 Spring 框架 4.0。2017 年 09 月Spring 5.0 发布。Spring Boot 的诞生随着使用 Spring 进行开发的个人和企业越来越多Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件Spring 的边界不断的进行扩充到了后来 Spring 几乎可以做任何事情了市面上主流的开源软件、中间件都有 Spring 对应组件支持人们在享用 Spring 的这种便利之后也遇到了一些问题。Spring 每集成一个开源软件就需要增加一些基础配置慢慢的随着人们开发的项目越来越庞大往往需要集成很多开源软件因此后期使用 Spirng 开发大型项目需要引入很多配置文件太多的配置非常难以理解并容易配置出错到了后来人们甚至称 Spring 为配置地狱。Spring 似乎也意识到了这些问题急需有这么一套软件可以解决这些问题这个时候微服务的概念也慢慢兴起快速开发微小独立的应用变得更为急迫Spring 刚好处在这么一个交叉点上于 2013 年初开始的 Spring Boot 项目的研发2014年4月Spring Boot 1.0.0 发布。Spring Boot 诞生之初就受到开源社区的持续关注陆续有一些个人和企业尝试着使用了 Spring Boot并迅速喜欢上了这款开源软件。直到2016年在国内 Spring Boot 才被正真使用了起来期间很多研究 Spring Boot 的开发者在网上写了大量关于 Spring Boot 的文章同时有一些公司在企业内部进行了小规模的使用并将使用经验分享了出来。从2016年到2018年使用 Spring Boot 的企业和个人开发者越来越多我们从 Spring Boot 关键字的百度指数就可以看出。上图为2014年到2018年 Spring Boot 的百度指数可以看出 Spring Boot 2.0 的推出引发了搜索高峰。当然 Spring Boot 不是为了取代 Spring ,Spring Boot 基于 Spring 开发是为了让人们更容易的使用 Spring。看到 Spring Boot 的市场反应Spring 官方也非常重视 Spring Boot 的后续发展已经将 Spring Boot 作为公司最顶级的项目来推广放到了官网上第一的位置因此后续 Spring Boot 的持续发展也被看好。什么是 Spring BootSpring Boot 介绍Spring Boot 是由 Pivotal 团队提供的全新框架其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置从而使开发人员不再需要定义样板化的配置。用我的话来理解就是 Spring Boot 其实不是什么新的框架它默认配置了很多框架的使用方式就像 maven 整合了所有的 jar 包Spring Boot 整合了所有的框架不知道这样比喻是否合适。Spring Boot 简化了基于 Spring 的应用开发通过少量的代码就能创建一个独立的、产品级别的 Spring 应用。 Spring Boot 为 Spring 平台及第三方库提供开箱即用的设置这样你就可以有条不紊地开始。Spring Boot 的核心思想就是约定大于配置多数 Spring Boot 应用只需要很少的 Spring 配置。采用 Spring Boot 可以大大的简化你的开发模式所有你想集成的常用框架它都有对应的组件支持。Spring Boot 特性使用 Spring 项目引导页面可以在几秒构建一个项目方便对外输出各种形式的服务如 REST API、WebSocket、Web、Streaming、Tasks非常简洁的安全策略集成支持关系数据库和非关系数据库支持运行期内嵌容器如 Tomcat、Jetty强大的开发包支持热启动自动管理依赖自带应用监控支持各种 IED如 IntelliJ IDEA 、NetBeansSpring Boot 这些特性会给我们研发带来非常大的优势下面我们可以分开来介绍使用 Spring Boot 的优势使用 Spring Boot 开发项目会给我们带来非常美妙的开发体验可以从以下几个方面展开来说明Spring Boot 让开发变得更简单Spring Boot 对开发效率的提升是全方位的我们可以简单做一下对比在没有使用 Spring Boot 之前我们开发一个 web 项目需要做哪些工作1配置 web.xml加载 Spring 和 Spring mvc2配置数据库连接、配置 Spring 事务3配置加载配置文件的读取开启注解4配置日志文件…n) 配置完成之后部署 tomcat 调试可能你还需要考虑各个版本的兼容性jar 包冲突的各种可行性。那么使用 Spring Boot 之后我们需要开发一个 web 项目需要哪些操作呢1登录网址 http://start.spring.io/ 选择对应的组件直接下载2导入项目直接开发上面的 N 步和下面的2步形成巨大的反差这仅仅只是在开发环境搭建的这个方面。Spring Boot 使测试变得更简单Spring Boot 对测试的支持不可谓不强大Spring Boot 内置了7种强大的测试框架JUnit 一个 Java 语言的单元测试框架Spring Test Spring Boot Test为 Spring Boot 应用提供集成测试和工具支持AssertJ支持流式断言的 Java 测试框架Hamcrest一个匹配器库Mockito一个 java mock 框架JSONassert一个针对 JSON 的断言库JsonPathJSON XPath 库我们只需要在项目中引入spring-boot-start-test依赖包就可以对数据库、Mock、 Web 等各种情况进行测试。Spring Boot Test 中包含了我们需要使用的各种测试场景满足我们日常项目的测试需求。Spring Boot 让配置变得更简单Spring Boot 让配置变简单说到这里我们就需要了解一下 Spring Boot 的核心思想约定优于配置。那么什么是约定优于配置呢约定优于配置convention over configuration也称作按约定编程是一种软件设计范式旨在减少软件开发人员需做决定的数量获得简单的好处而又不失灵活性。本质是说开发人员仅需规定应用中不符约定的部分。例如如果模型中有个名为 User 的类那么数据库中对应的表就会默认命名为 user。只有在偏离这一约定时例如将该表命名为”user_info”才需写有关这个名字的配置。Spring Boot 让部署变得更简单说起 Spring Boot 让部署变简单就不得不说 Spring Boot 内嵌容器。内嵌容器不只让部署变得简单其实在开发调试阶段也会带来非常大的便利性对比以往开发 Web 项目时配置 Tomcat 的繁琐会让大家使用 Spring Boot 内嵌容器开发时有更深的感触。使用 Spring Boot 开发 Web 项目让我们不需要关心容器的环境问题专心写业务代码即可。Jenkins 是目前持续构建领域使用最广泛的工具之一Jenkins 是一个独立的开源自动化服务器可用于自动化各种任务如构建测试和部署软件。Jenkins 可以通过本机系统包 Docker 安装甚至可以通过安装 Java Runtime Environment 的任何机器独立运行。说直白一点 Jenkins 就是专门来负责如何将代码变成可执行的程序包将它部署到目标服务器中并对其运营状态日志进行监控的软件。自动化、性能、打包、部署、发布、发布结果自动化验证、接口测试、单元测试等等关于我们打包测试部署的方方面面 Jenkins 都可以很友好的支持。使用 Jenkins 部署 Spring Boot 项目非常简单大家想继续了解可以参考我的文章使用Jenkins部署Spring Boot只需要前期做一些简单的配置当我们需要发布项目时只需要点击项目对应的发布按钮就可以将项目从版本库中拉取、打包、发布到目标服务器中大大简化了运维后期的部署工作。虚拟化技术的发展给我们带来了更多的可能性我们可以利用容器化技术将 Spring Boot 项目做成镜像根据容器集群的策略来实现弹性扩容、动态部署等。所以 Spring Boot Docker Jenkins 会将 Spring Boot 项目的部署做得更简单化、智能化。Spring Boot 让监控变得更简单可以说 Spring Boot 就是一款自带监控的开源软件在设计之初就考虑到应用的监控问题专门提供了一款监控组件来完成这个工作这个组件就是Spring Boot Actuator 。Spring Boot Actuator 是 Spring Boot 提供的对应用系统监控的集成功能可以查看应用配置的详细信息例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。当然 Spring Boot Actuator 虽然可以监控一个 Spring Boot 应用的健康情况实际上现在的系统都是需要很多的服务相互配合来完成工作如何通过一个监控软件来监控所以的 Spring Boot 项目将变得比较紧迫。在开源界也有人意识到了这个问题并且基于 Spring boot actuator 做出了一款强大的监控软件这个软件就是 Spring Boot admin 。Spring Boot Admin 是一个管理和监控 Spring Boot 应用程序的开源软件。每个应用都认为是一个客户端通过 HTTP 或者使用 Eureka 注册到 admin server 中进行展示Spring Boot Admin UI 部分使用 AngularJs 将数据展示在前端。Spring Boot Admin 是一个针对 spring-boot 的 actuator 接口进行UI美化封装的监控工具。他可以在列表中浏览所有被监控 spring-boot 项目的基本信息详细的 Health 信息、内存信息、JVM 信息、垃圾回收信息、各种配置信息比如数据源、缓存列表和命中率等还可以直接修改logger的level。使用 Spring Boot Admin 不仅可以监控 Spring Boot 项目还可以监控 Spring Cloud 项目因此使用了 Spring Boot 项目之后我们监控 Spring Boot 集群效果如下简单、直观、易用是它的特点针对一些特殊情况还可以提供报警服务。所以说使用 Spring Boot Actuator 解决了单个 Spring Boot 的监控问题使用 Spring Boot Admin 就是解决了整个集群监控的问题。Spring 、Spring Boot 和 Spring Cloud 的关系Spring 最初最核心的两大核心功能 Spring Ioc 和 Spring Aop 成就了 SpringSpring 在这两大核心的功能上不断的发展才有了 Spring 事务、Spirng Mvc 等一系列伟大的产品最终成就了 Spring 帝国到了后期 Spring 几乎可以解决企业开发中的所有问题。Spring Boot 是在强大的 Spring 帝国生态基础上面发展而来发明 Spring Boot 不是为了取代 Spring ,是为了让人们更容易的使用 Spring 。所以说没有 Spring 强大的功能和生态就不会有后期的 Spring Boot 火热, Spring Boot 使用约定优于配置的理念重新重构了 Spring 的使用让 Spring 后续的发展更有生命力。Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等都可以用 Spring Boot 的开发风格做到一键启动和部署。Spring 并没有重复制造轮子它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。根据上面的说明我们可以看出来Spring Cloud 是为了解决微服务架构中服务治理而提供的一系列功能的开发框架并且 Spring Cloud 是完全基于 Spring Boot 而开发Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件整体对外提供了一套在微服务架构中服务治理的解决方案。
延伸阅读

更多相关文章

2026/9/8 20:14:25

墨香情手游安卓版安装问题全解析与解决方案

1. 墨香情手游安卓版安装现状分析墨香情作为一款国风武侠题材的MMORPG手游,凭借其精美的画面和丰富的社交系统吸引了大量玩家。但在安卓平台的实际安装过程中,机型适配问题却成为了阻碍玩家体验的首要障碍。根据玩家社区反馈,近三个月来关于安…

2026/9/14 2:53:11

计算机毕业设计之net Core的家居用品销售平台

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

2026/9/14 22:30:45

Django博客开发实战:从入门到部署

1. Django博客项目概述在Web开发领域,Django作为Python生态中最成熟的Web框架之一,以其"开箱即用"的特性深受开发者喜爱。一个基础的博客系统通常包含文章发布、分类管理、用户评论等核心功能,这正是初学者掌握Django框架的绝佳切入…

2026/9/14 22:30:45

构建多维标签体系:提升精准营销与用户体验的关键技术

1. 项目概述:多维标签体系的商业价值 客户画像的精准度直接决定了营销转化率和用户体验。传统的一维标签(如性别、年龄)已无法满足精细化运营需求,我们需要构建能反映客户360度特征的立体化标签体系。这种体系通过交叉分析客户行为…

2026/9/14 22:30:45

FlowingLight:为数据可视化大屏打造高级流光动效

做数据可视化大屏这几年,我最大的一个感受是:功能做齐全不难,难的是让大屏“看起来高级”。数据指标摆在那儿,ECharts图表大家都会配,但一块真正能让人眼前一亮的大屏,往往赢在那些不起眼的细节里——边框那…

2026/9/14 22:30:45

基于Django的超市管理系统开发实践与优化

1. 项目概述与核心需求超市管理系统作为零售行业的核心信息化工具,其设计需要兼顾商品流通全流程管理和用户体验。这个基于Django框架实现的系统,主要解决传统超市运营中存在的三个痛点:手工记账效率低下、库存更新不及时、销售数据分析缺失。…

2026/9/14 22:30:45

本地密码管理工具的安全架构与实现

1. 项目概述:本地账号密码管理工具的核心价值在数字化生活日益普及的今天,平均每个网民需要管理超过100组账号密码。传统的手写记录、重复使用简单密码或浏览器自动保存等方式,都存在严重的安全隐患和效率问题。这正是"807-本地账号密码…

2026/9/14 22:25:41

Claude Code /loop功能解析:AI辅助编程的效率革命

1. Claude Code /loop功能解析:终端开发者的效率革命2023年第四季度,Anthropic公司推出的Claude Code工具链中,/loop功能的发布在开发者社区引发了热烈讨论。这个看似简单的命令行交互模式,实际上重新定义了AI辅助编程的工作流程。…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码