Spring 的起源

行莫
行莫
发布于 2025-06-27 / 1 阅读
0
0

Spring 的起源

自从 1995 年Java语言诞生后,在 J2EE 企业级开发中占据主流地位的是 EJB (Enterprise Java Bean) 它是Java EE(现已更名为Jakarta EE)平台中用于构建企业级应用程序的服务器端组件模型。EJB旨在简化企业级应用的开发,通过封装业务逻辑,并提供诸如事务管理、安全性、持久化等服务,使得开发者可以专注于业务功能的实现,而无需过多关注底层基础设施的复杂性。

Java企业版API(Java Enterprise Edition)中提供了对EJB的规范。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。EJB最早于1997年由IBM提出,旋即被太阳微系统采用并形成标准(EJB 1.0 和EJB 1.1)。其后在Java社区进程(Java Community Process)支持下陆续有一些JSR被制订来定义新的EJB标准,分别是JSR 19 (EJB 2.0), JSR 153 (EJB 2.1) 以及最新的JSR 220 (EJB 3.0)。

EJB规范的目的在于为企业及应用开发人员实现后台业务提供一个标准方式,从而解决一些此前总是在作业过程中总是重复发生的问题。EJB以一个标准方式自动处理了诸如数据持久化,事务集成,安全对策等不同应用的共有问题,使得软件开发人员可以专注于程序的特定需求而不再饱受那些非业务元素的困扰。

虽然 EJB 有很多的美好的许诺,但在实际应用中却爆露出很多问题。EJB 的规范十分复杂,就导致开发效率较低。斌且难以做到测试驱动开发 (Test Driven Development , TDD), 并且 EJB 往往导致更高的开发成本,而提供的好处也不并不像它所许诺的那么丰富。有时候它还会让简单的事情变得复杂。大家期望的是在项目中基础设施组件和业务逻辑是剥离开的,应用开发人员只需要把注意力集中在自身的业务逻辑上,而基础设施应当尽可能的简单易用高效稳定。

Rod Johnson 在 《Expert One on one J2EE Development without EJB》中写到:

从本质上来说,J2EE 就是一大堆标准化的企业级服务——例如命名和目录服务(JNDI)、为异构的事务性资源提供的标准事务管理接口(JTS 和 JTA)、连接遗留系统的标准机制(JCA)、资源池、线程管理等——的集合体。J2EE 真正的威力在于这些服务对于整个行业非常有益。

另一方面,EJB 使开发者能够通过一个特定的组件模型使用这些有价值的服务,它仅仅是使用这些服务的手段之一。

即便没有 EJB,我们照样能够使用 JNDI、JTA、JCA、资源池……以及其他所有的 J2EE 服务。我们可以编写代码直接使用它们(这并不像乍看上去那么可怕),也可以借助久经考验的库和框架来使用它们——后者是更好的做法,因为这些库和框架不仅可以让我们摆脱使用 J2EE 服务的复杂度,而且也不会招致 EJB 所带来的复杂度。

应用程序都需要一个基础骨架,也就是我们的基础设施,就好比我们想要更好的发展商业,就需要先提供良好的治安环境,完备的法律体系,便利的交通,便利高效的通信网络等等,这些都是我们的基础设施。对于对象的管理就是其中一项基础设施,我们需要对对象进行管理是因为要避免混乱,为我们的应用程序提供一种秩序,让它能够良性的发展。

在上述这些背景下就催生了 Spring , Yann 想到了 spring 的名字团队成员任务它简单,容易拼写,有积极的含义于是就确定了 Spring 的名称 。 Spring 项目是从 2003 年2月份启动的,最早的代码在 2001 年时就已经开发了。其中的基础代码来自Rod Johnson 在2002年写的 《Expert one on one J2EE design and development》一书。Rod Johnson 在 《Expert One on one J2EE Development without EJB》一书中介绍了 Spring 框架的一些核心概念如:对象管理,控制反转、依赖注入、AOP、事务管理、持久化等。


评论