Spring的历史及哲学

Spring的历史和哲学

1.Spring 历史

时间回到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 ,成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。

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 发布。

2.Spring是什么

Spring 是指一个用于构造 JAVA 应用程序的轻量级框架,但这句话包含两个有趣的地方。首先,你可以采用 Spring 来构造任何程序,这一 Apache Struts这样的框架不同,你不限定于只编写 WEB 应用。其次,以上解释中的“轻量级”并不意味着类数量很少,或者发行包大小很小,实际上,它指的是 Spring 哲学原理的总称——那就是最少的侵入。 Spring 是轻量级的,意味着你只需对你的程序代码做很少改动 ( 假若有的话 ) ,而获得 Spring 核心带来的好处,你也可以在任何时候选择抛弃 Spring ,你会发现这实在很容易。注意,上面这句话只针对 Spring 核心本身——很多附加的 Spring 组件,比如数据访问,需要与 Spring 框架有相对紧密得多的耦合关系。但是,这些耦合带来的好处显而易见。

Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。

3、Spring 的体系结构

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式

Spring 框架图:

Spring的历史及哲学

1. 核心容器

核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开 ( 工厂方法 ) 。

2.Spring 上下文

Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企业服务,例如JNDI 、 EJB 、电子邮件、国际化、校验和调度功能。

3.Spring AOP

通过配置管理特性, Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP 。 Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP ,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

4.Spring DAO

JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。 Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

5.Spring ORM

Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

6.Spring Web 模块

Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以, Spring 框架支持与 Jakarta Struts 的集成。 Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

7.Spring MVC 框架

MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口, MVC 框架变成为高度可配置的, MVC 容纳了大量视图技术,其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI 。

上一篇:分享在winform下实现模块化插件编程


下一篇:关于ssh-keygen 生成的key以“BEGIN OPENSSH PRIVATE KEY”开头