在5分钟或更短的时间内解释Spring Framework。
Spring Framework 是一个功能强大的开源 Java 应用程序开发框架,可以轻松创建强大、高性能的应用程序。
开源指的是人们可以自由访问、修改和共享的内容,因为源代码是免费提供的。
开源应用程序框架是由一组软件开发人员创建的软件开发模板。存在不同类型的模板,用于不同的目的,例如创建用户界面、网站和基本软件应用程序。
如果您刚开始进行应用程序开发,那么开始使用 Spring Framework 可能是一个很好的开始。在本文中,您将了解它是什么以及如何使用它。
什么是 Spring Framework?

Spring Framework 是一个开源框架,开发人员使用它来创建企业级 Java 应用程序。该框架由 Rod Johnson 创建,并在 2003 年以 Apache 2.0 许可证发布。
一些程序员通常抨击 Java,并声称创建基本应用程序很麻烦。Spring Framework 的目标是简化繁琐和复杂的企业级 Java 应用程序开发过程。
Spring 很大。因此,建议您在开始使用其他基于 Spring 的项目(如 Spring Boot、Spring GraphQL 和 Spring Cloud)之前,先了解 Spring 框架是什么。
为什么使用 Spring Framework?
- 灵活。该框架提供了面向方面的编程(AOP)、依赖注入(DI)和普通的 Java 对象(POJO)等技术。因此,您可以使用 Spring 实现不同的目标。
- Spring 很快。尽管具有所有这些技术,Spring Framework 仍然是轻量级的,非常适合创建可扩展和强大的企业级 Web 应用程序。
- 令人敬畏的社区。Spring 拥有一个多样化的社区,您可以信任它在您急需解决方案时提供各种帮助。
- 安全。Spring 以其安全措施而闻名,漏洞问题始终通过频繁的补丁进行修复。第三方依赖项始终受到监视,以确保其漏洞不会干扰核心流程。
- 高效。Spring Framework 简化了开发 Java 企业应用程序的体验。
Spring 的特点
支持面向方面的编程
面向方面的编程为横切关注点提供了更多的模块化。AOP 也是面向对象编程的补充。
AOP 中的模块化主要单元是横切关注点(Aspect)。开发人员可以创建声明性的企业服务和自定义方面。
控制反转(IoC)容器
IoC 容器提供了一种简化的方式来管理和配置 Java 对象。该容器管理所定义的 Java 对象的生命周期,从而大大增加了基于 Spring 的应用程序的可重配置性。
控制反转利用依赖查找或依赖注入模式,提供对象引用运行时。IoC 容器配备了配置管理所需的汇编器代码。
数据访问框架
Spring 为 Hibernate、JDBC 和 Java Persistence API(JPA)等最流行的 Java 数据访问框架提供直接支持,简化了数据通信过程。您还可以依靠该框架提供资源包装、异常处理和对所有支持的数据访问框架的资源管理等功能。
Spring MVC 框架
开发人员可以使用这个基于请求的框架来创建符合自己需求的定制化 MVC 实现。
DispatcherServlet类负责处理用户的请求并将其转发到正确的控制器,它是Spring MVC的核心。因此,控制器可以处理请求、创建模型并通过指定的视图向最终用户提供信息。
有几个测试框架
您可以通过Mock对象、TestContext框架或Spring MVC Test来测试您基于Spring的应用程序。
语言支持
Spring框架支持Groovy和Kotlin。
Spring架构
Spring Framework带有约20个模块。这个框架的好处是它允许您选择适用于您的用例的模块。这些模块分为核心容器、AOP(面向切面编程)、数据访问/集成、Web、仪表和测试。

#1. 核心容器
Spring Framework的核心容器包含核心、Beans、Context和表达式语言模型。这些语言模型在以下方面非常有用;
- 核心模块是框架的基本部分。您将在核心中找到IoC和依赖注入功能。
- Bean模块以BeanFactory而闻名,这是一种复杂的工厂模式实现。
- Context模块基于核心和Bean模块构建。该模块继承自Bean模块的功能,但增加了对国际化的支持。
- 表达式语言模块提供了一种强大的表达式语言,用于在运行时操作和查询对象图。
#2. 数据访问/集成
JDBC、ORM、OXM、JMS和Transaction模块构成了数据访问/集成层。这些模块执行以下操作;
- JDBC模块具有一个JBDC抽象层,可以消除繁琐的JDBC编码以及对特定于数据库供应商的错误代码的解析。
- ORM是一种集成层,适用于一些流行的对象关系映射API,如JPA、JDO、Hibernate和iBatis。
- OXM模块是一个抽象层,支持XStream、JAXB、JiBX、Castor和XMLBeans的对象/XML映射实现。
- 事务模块支持实现特殊接口的类的声明性和编程性事务管理。
- Java消息服务(JMS)模块具有生成和消费消息的功能。
#3. AOP(面向切面编程)和仪表
该模块带有符合AOP Alliance的面向切面编程实现,可以轻松定义诸如方法拦截器之类的事物。另一方面,Instrumentation模块提供了在某些应用服务器中使用的类加载器和类仪表的支持。
#4. Web
Web、Web-Servlet、Web-Struts和Web-Portlet模块构成了Web层。
- Web模块负责基本的面向Web的集成功能,如多部分文件上传功能。
- Web-Servlet模块提供了用于Web应用程序的Spring MVC实现。
- Web-Portlet模块与Web-Servlet模块的功能相似。Web-Portlet模块提供了可在portlet环境中使用的MVC实现。
- Web-Socket模块支持服务器和客户端之间的双向通信。
#5. 测试
测试模块是Spring架构的最后一部分。它是支持使用TestNG或JUnit测试Spring组件的模块。
安装Spring框架
检查是否安装了Java
在学习Spring框架的工作原理之前,我们必须在计算机上安装Spring。根据您的操作系统,Spring documentation提供了详细的入门资源。
在我们的案例中,我们将使用基于Linux的操作系统Ubuntu 20.04.5。
在安装Spring之前,请确保您已经安装了Java,可以使用以下命令进行检查:
java -version
如果您已经安装了Java,您将会看到类似于这个屏幕截图的输出。

如果您的计算机上没有安装Java,可以根据您的需求采用几种方法进行安装。请参考install Java。
安装Spring框架
有几种不同的方法可以安装Spring框架,详情请参考Spring docs.。
在我们的案例中,我们将使用GVM(Groovy环境管理器)。您可以使用GVMtool获取GVM或将其安装在command line上。
一旦您安装了GVM,请使用以下命令安装并检查Spring框架是否已安装:
gvm install springboot
spring --version
如果Spring已安装,您可能会看到类似于这个屏幕截图的输出。

与Spring框架相关的重要术语
依赖注入
依赖注入是一种允许开发人员在类外部创建独立对象的功能。DI还允许用户以不同的方式向类提供这些对象。
控制反转(IoC)
控制反转是一种概念,将程序或对象的控制权转移给框架或容器。在传统的编程中,我们的自定义代码调用库。而控制反转允许框架(在这种情况下是Spring)调用我们的自定义代码并控制程序的流程。
面向切面编程(AOP)
面向切面编程是一种构建可应用于整个应用程序的常见和可重用例程的技术。这种方法将可重复的任务(如输入验证、日志记录和错误处理)与核心应用程序逻辑分离。
Spring框架学习资源
#1. 使用Spring框架5进行响应式编程

这个Spring course由视频、文章和可下载资源组成。该课程教授如何使用Java进行响应式编程,如何使用Spring WebFlux进行微服务开发,以及如何在Spring Data MongoDB中利用响应式类型。
#2. Spring框架大师班

Spring Framework Master Class是一门付费课程,教授Java项目如何使用Spring框架。您将学习如何使用Spring Boot、JUnit和Mockito、Spring JDBC、Spring AOP和Hibernate等各种工具。
#3. 简化Spring框架

Spring Framework是一门理想的高级课程,如果您想使用Spring框架创建端到端的Java EE Web应用程序,这门课程非常适合您。您将学习如何使用Spring MVC开发Web应用程序,如何使用JQuery和Spring MVC进行Ajax调用,以及如何使用Spring JDBC执行数据库操作等。
#4. Spring框架5

Spring Framework 5 course非常适合学习Spring框架5、Spring Data MongoDB、Spring Boot 2、Spring MVC、Spring Data JPA和Hibernate。课程包括57小时的按需视频、13篇文章和大量可下载材料。
作者的话
Java仍然是现代世界中最受欢迎的编程语言之一。尽管有新的语言被引入,但是像Spring这样的框架为Java带来了新的生机并扩展了其实用性。因此,我们很可能会继续对Java工程师有需求,因为他们需要维护遗留代码并创建新的应用程序。
结论
Spring在Java EE frameworks中排名靠前,我们希望您现在已经了解了Spring框架是什么,它的特点、架构和工作过程。当与其他Spring项目结合使用时,Spring框架为开发人员提供了可以在不同开发环境中使用的各种开发工具。