Spring是什么

Spring 是一个开源的轻量级企业级应用程序开发框架,最初由“Spring之父”Rod Johnson 在 2002 年创建。它可以帮助开发人员更快速、更高效地构建高质量的企业级应用程序。Spring 涵盖了从数据访问、Web 应用程序开发、批处理、安全、移动端应用程序开发到云计算等各个方面的内容,可以帮助开发人员解决软件开发过程中的实际问题。

Spring 以其简洁、灵活和可扩展性等优点备受欢迎,已成为 Java 企业应用开发的事实标准,甚至被认为是 Java EE 的代名词。

Java EE 在 2017 年被 Oracle 捐赠给了 Eclipse 基金会,2018年正式更名为 Jakarta EE,自此以后,Java EE 相关的规范和技术都是在 Jakarta EE 的名义下开发和发布的。这里我们为了不给大家带来困扰,仍然使用 Java EE 一词。

Spring 的诞生与发展

在 Java 企业应用开发早期,EJB 是主要的开发框架。然而,EJB 复杂性高、代码臃肿、侵入性强、开发周期长等问题导致其在实际应用中表现不佳。为了解决这些问题,Rod Johnson 在 2002 年出版了《Expert One-on-One J2EE Design and Development》一书,并提出了一种更加简洁、灵活和可扩展的替代方案:Spring 框架。

Spring 最初只是由 Rod Johnson 个人编写的轻量级框架,其核心部分只有几百行代码。随着时间的推移,Spring 逐渐扩展,演变成了一个功能强大、成熟稳定的开发框架。Spring 的可重用接口和类被组织在一个名为 org.springframework 的包中。

Spring 提供了许多功能强大的模块,如 Spring MVC、Spring Security、Spring Data 等,这些模块可以帮助开发人员更加轻松地构建各种类型的企业级应用程序。

自 2004 年发布 Spring 1.0 以来,Spring 已经经历了多个大版本的迭代更新,并成为了一个功能强大、成熟稳定的开发框架。本课程使用的是 Spring 当前最新发布的正式版本 6.0.5。

Spring 的狭义和广义

在不同的语境中,Spring 所代表的含义是不同的。下面我们就分别从“广义”和“狭义”两个角度,对 Spring 进行介绍。

广义的 Spring 

从广义上讲,Spring 技术栈指的是以 Spring Framework 为核心的技术栈。

经过近二十年的发展,Spring 已经不仅仅是一个单纯的应用框架了,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,包括 Spring Framework、Spring MVC、Spring Boot、Spring Cloud、Spring Data、Spring Security 等子项目。其中,Spring Framework 是其他子项目的基础。
 

子项目名称 描述
Spring Data Spring 提供的数据访问模块,对 JDBC 和 ORM 提供了很好的支持。通过它,开发人员可以使用一种相对统一的方式,来访问位于不同类型数据库中的数据。
Spring Batch 一款专门针对企业级系统中的日常批处理任务的轻量级框架,能够帮助开发人员方便的开发出健壮、高效的批处理应用程序。
Spring Security 前身为 Acegi,是 Spring 中较成熟的子模块之一。它是一款可以定制化的身份验证和访问控制框架。
Spring Mobile 针对移动端 Web 应用程序开发的扩展,用来简化移动端 Web 应用的开发。
Spring Boot 是 Spring 团队提供的全新框架,它为 Spring 以及第三方库一些开箱即用的配置,可以简化 Spring 应用的搭建及开发过程。
Spring Cloud 一款基于 Spring Boot 实现的微服务框架。它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。

狭义的 Spring

从狭义上讲,Spring 指的是 Spring Framework,它是 Spring 技术栈的核心,也是最早的 Spring 项目。

Spring Framework 提供了很多功能,包括控制反转(IoC)和依赖注入(DI)、面向切面编程(AOP)、数据访问、Web 应用程序开发、事务管理等等。其中,IoC 和 AOP 更是 Spring Framework 的核心。
 

核心 描述
IOC Inverse of Control 的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理。

Spring 通过其提供的 IOC 容器可以自动管理对象的生命周期和依赖关系。使用 IoC 容器和依赖注入,开发人员可以将应用程序的对象解耦,使得应用程序更容易测试和维护。
AOP Aspect Oriented Programming 的简写,译为“面向切面编程”。

AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。


除此之外,Spring Framework 还支持多种开发模式和编程语言,可以与其他开发框架(如 Struts、Hibernate 等)无缝集成,扩展性非常好。Spring Framework 得到广泛应用,其他的 Spring 子项目都是基于 Spring Framework 的基础上构建的。

Spring Framework 特点

Spring Framework 是一个基于 Java 的应用程序框架,具有以下特点:
  • 轻量级:Spring Framework 采用了轻量级的设计模式,不需要很多配置和依赖,可以很容易地集成到其他应用程序中。
  • 容器:Spring Framework 提供了一个容器,可以管理对象的生命周期和依赖关系。这个容器可以自动装配对象,从而减少了代码量,提高了应用程序的可维护性。
  • 面向切面编程(AOP):Spring Framework 支持面向切面编程,可以很容易地实现一些横向的功能,如事务管理、安全控制等。
  • 控制反转(IoC)和依赖注入(DI):Spring Framework 提供了控制反转和依赖注入的功能,通过这两种方式可以将应用程序的对象解耦,从而提高应用程序的可测试性和可维护性。
  • 支持各种开发模式和编程语言:Spring Framework 支持各种开发模式和编程语言,可以与其他开发框架(如 Struts、Hibernate 等)无缝集成,使得开发人员可以更加灵活地使用它来构建应用程序。
  • 大量的第三方扩展:Spring Framework 拥有一个庞大的生态系统,有大量的第三方扩展可以用来增强框架的功能,如 Spring Data、Spring Security 等。

综上所述,Spring Framework 具有轻量级、容器、面向切面编程、控制反转和依赖注入、支持各种开发模式和编程语言以及大量的第三方扩展等特点,使得它成为企业级应用程序开发中广泛使用的框架。

Spring Framework 体系结构

Spring Framework 6.0.x 是一个企业级的 Java 开发框架,它提供了丰富的功能和工具,以便开发人员可以快速构建可维护和可扩展的应用程序。

Spring Framework 6.0.x 的体系结构主要由以下几个部分组成。

模块 说明
核心容器(Core Container) 核心容器是 Spring Framework 的基础部分,它包含了 Spring 的核心组件,如 IoC 容器、AOP 框架、BeanFactory 等,提供了对象的创建和管理、依赖注入、面向切面编程等功能。
数据访问与集成(Data Access/Integration) Spring Framework 提供了对多种数据存储和集成方式的支持,如 JDBC、ORM、NoSQL、消息队列等,可以轻松地与各种数据源集成。
Web 支持(Web Support) Spring Framework 提供了对 Web 应用的支持,包括 MVC 框架、RESTful Web Services、WebSocket、WebSockets、Servlet、JSP、WebSocket 等。
测试(Testing) Spring Framework 提供了对单元测试和集成测试的支持,如 JUnit、TestNG、Mockito、Spring Test 等。
安全性(Security) Spring Framework 提供了对 Web 应用的安全性支持,包括基于角色的访问控制、安全的密码编码、OAuth2、OpenID Connect 等。
集成其他框架(Integration with other frameworks) Spring Framework 可以轻松地与其他框架集成,如 Struts、Hibernate、MyBatis、Quartz 等。

总之,Spring Framework 6.0.x 的体系结构非常灵活和可扩展,可以根据不同的应用需求进行定制化配置,提高开发效率和应用程序的可维护性。

声明:《Spring系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。