Spring Framework(Spring框架)
Overview(概述)
Spring使创建Java企业应用程序变得很容易。它提供了你在企业环境中拥抱Java语言所需要的一切,支持Groovy和Kotlin作为JVM上的替代语言,并且可以根据应用的需要灵活地创建多种架构。从Spring Framework 6.0开始,Spring需要Java 17+。
Spring支持广泛的应用场景。在大型企业中,应用程序通常会存在很长时间,而且必须运行在JDK和应用服务器上,其升级周期是开发者无法控制的。还有一些应用可能以嵌入服务器的单一jar形式运行,可能在云环境中。还有一些可能是独立的应用程序(如批处理或集成工作负载),不需要服务器。
Spring是开源的。它有一个庞大而活跃的社区,根据不同的现实世界的使用案例提供持续的反馈。这有助于Spring在很长一段时间内成功发展。
What We Mean by “Spring”(我们所说的 “Spring"是什么意思)?
术语 “Spring “在不同的语境中意味着不同的东西。它可以用来指代Spring框架项目本身,它是一切的开始。随着时间的推移,其他Spring项目也被建立在Spring框架之上。大多数时候,当人们说 “Spring “时,他们指的是整个项目家族。这个参考文档的重点是基础:Spring框架本身。
Spring框架被划分为多个模块。应用程序可以选择他们需要的模块。核心是核心容器的模块,包括一个配置模型和一个依赖注入机制。除此之外,Spring框架还为不同的应用架构提供了基础支持,包括消息传递、事务性数据和持久性以及Web。它还包括基于Servlet的Spring MVC网络框架,以及并行的Spring WebFlux反应式网络框架。
关于模块的说明: Spring的框架Jar包允许部署到JDK 9的模块路径(“Jigsaw”)。为了在支持Jigsaw的应用程序中使用,Spring Framework 5的jars带有 “Automatic-Module-Name “清单项,它定义了独立于jar工件名称的稳定的语言级模块名称(“spring.core”、“spring.context “等)(jars遵循相同的命名模式,以”-“代替”.",例如 “spring-core “和 “spring-context”)。当然,Spring的框架jars在JDK 8和9+的classpath上都保持正常工作。
Design Philosophy(设计理念)
当你了解一个框架时,重要的是不仅要知道它做什么,还要知道它遵循什么原则。下面是Spring框架的指导原则:
- 在每个层面上提供选择。Spring让你尽可能晚地推迟设计决策。例如,你可以通过配置来切换持久化供应商,而无需改变你的代码。对于许多其他基础设施问题和与第三方API的集成也是如此。
- 适应不同的观点。Spring拥抱灵活性,对事情应该如何做不持意见。它支持具有不同视角的广泛的应用需求。
- 保持强大的后向兼容性。Spring的演进是经过精心管理的,在不同的版本之间几乎不存在破坏性的变化。Spring支持一系列精心选择的JDK版本和第三方库,以方便维护依赖Spring的应用程序和库。
- 关心API的设计。Spring团队花了很多心思和时间来制作直观的API,并且在很多版本和很多年中都能保持良好的效果。
- 为代码质量设定高标准。Spring框架非常强调有意义的、最新的和准确的javadoc。它是为数不多的可以宣称代码结构干净、包与包之间没有循环依赖关系的项目之一。
Core Technologies(核心技术)
这一部分的参考文档涵盖了所有与Spring框架绝对相关的技术。
其中最重要的是Spring框架的反转控制(IoC)容器。在对Spring框架的IoC容器进行彻底处理后,紧接着是对Spring面向切面编程(AOP)技术的全面介绍。Spring框架有自己的AOP框架,在概念上很容易理解,它成功地解决了Java企业编程中AOP要求的80%的甜蜜点。
还提供了Spring与AspectJ(目前Java企业领域中功能最丰富、最成熟的AOP实现)集成的报道。
AOT处理可以用来提前优化你的应用程序。它通常用于使用GraalVM的本地镜像部署。
The IoC Container(IoC容器)
Introduction to the Spring IoC Container and Beans(Spring IoC容器和Bean介绍)
本章介绍了Spring框架对反转控制(IoC)原则的实现。IoC也被称为依赖性注入(DI)。它是一个过程,对象仅通过构造参数、工厂方法的参数或在对象实例被构造或从工厂方法返回后在其上设置的属性来定义其依赖关系(即它们与之合作的其他对象)。然后,容器在创建 bean 时注入这些依赖关系。这个过程从根本上说是Bean本身通过使用直接构建类或诸如服务定位模式的机制来控制其依赖关系的实例化或位置的逆过程(因此被称为控制反转)。
org.springframework.beans
和org.springframework.context
包是Spring Framework的IoC容器的基础。BeanFactory
接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext
是BeanFactory
的一个子接口。它增加了:
- 更容易与Spring的AOP功能集成.
- 信息资源处理(用于国际化)。
- 活动发布。
- 应用层的特定上下文,如
WebApplicationContext
,用于网络应用。
简而言之,BeanFactory
提供了配置框架和基本功能,而ApplicationContext
则增加了更多企业专用的功能。ApplicationContext
是BeanFactory
的一个完整的超集,在本章对Spring的IoC容器的描述中专门使用。关于使用BeanFactory
而不是ApplicationContext
的更多信息,请参见涵盖BeanFactory API的章节。
在Spring中,构成你的应用程序的骨干并由Spring IoC容器管理的对象被称为Bean。Bean是一个由Spring IoC容器实例化、组装和管理的对象。否则,Bean只是你的应用程序中众多对象中的一个。Bean以及它们之间的依赖关系都反映在容器使用的配置元数据中。