1.Spring 框架概述

时间:2022-03-30 21:26:24

Spring 框架概述

Version 5.2.6.RELEASE

Spring使创建Java企业级应用变得更加容易。它提供了在企业环境中拥抱Java语言开发所需的一切。Groovy和Kotlin作为JVM上的可选语言,Spring也提供了良好支持,Spring也能根据应用程序的需要灵活地创建多种架构。从Spring 5.1开始,Spring需要JDK 8+(Java SE 8+),并对JDK 11 LTS提供了开箱即用支持。作为Java 8的最低补丁版本,建议将Java SE 8更新到60版本,但一般建议使用最近的补丁版本。

Spring支持广泛的应用场景。在大型企业中,应用程序往往存在很长时间,且必须在升级周期不受开发人员控制的JDK和应用程序服务器上运行。有些应用程序可能是以单个jar的形式嵌入服务器运行,也有可能是在云环境中运行。还有一些可能是独立的应用程序(如批处理或集成工作负载),不需要在服务器中运行。

Spring是开源的。 它拥有一个庞大而活跃的社区,可以根据各种实际用例提供持续的反馈。 这帮助了Spring在很长一段时间内得到成功发展。

1 我们所说的 "Spring "是什么意思

"Spring "这个词在不同的语境下有不同的含义。它可以用来指Spring框架项目本身,也就是整个Spring的起源。随着时间的推移,其他的Spring项目都以Spring框架为基础。大多数情况下,当人们说 "Spring "时,他们指的是整个Spring项目家族。本参考文档主要关注的是基础:Spring框架本身。

Spring框架分为多个模块。应用程序可以选择他们需要哪些模块。核心容器是模块的核心,包括配置模型和依赖注入机制。除此之外,Spring框架还为不同的应用架构提供了基础支持,包括消息传递、数据的事务和持久化以及web支持。它还包括基于Servlet的Spring MVC Web框架,同时还包括Spring WebFlux reactive Web框架。

关于此模块的说明。Spring 的框架相关jar包允许部署到 JDK 9 的模块路径下("Jigsaw")。为了支持Jigsaw应用程序的使用,Spring Framework 5 相关jar包附带了 "Automatic-Module-Name "清单条目,它定义了独立于jar artifact名称的稳定语言级模块名称("spring.core"、"spring.context "等),(jar遵循相同的命名模式,只是用"-“代替”.",例如 "spring-core "和 "spring-context")。当然,Spring框架的jar包在JDK 8和9+的classpath上都能正常工作。


2. Spring和Spring框架的历史

作为对早期J2EE规范的复杂性的回应,Spring于2003年诞生。虽然有些人认为Java EE和Spring是竞争关系,但实际上Spring是对Java EE的补充。Spring 编程模型并不包含Java EE平台规范;相反,它与Java EE保护伞中精心挑选的特别规范进行了整合。

Spring框架还支持依赖注入(JSR 330)和通用注释(JSR 250)规范,应用程序开发人员可以选择使用这些规范来代替Spring框架提供的Spring特有的机制。

从Spring Framework 5.0开始,Spring至少需要Java EE 7级别(如Servlet 3.1+、JPA 2.1+),同时在运行时遇到Java EE 8级别的新API(如Servlet 4.0、JSON Binding API)时,Spring也提供了开箱即用的集成。这使得Spring与Tomcat 8和9、WebSphere 9以及JBoss EAP 7等完全兼容。

随着时间的推移,Java EE在应用程序开发中的作用也在不断发展。在Java EE和Spring的早期,应用程序创建后是为了部署到应用服务器上。如今,在Spring Boot的帮助下,应用程序是以Devops和云端友好的方式创建的,嵌入了Servlet容器,改变起来的很简单。从Spring Framework 5开始,WebFlux应用程序甚至不直接使用Servlet API==就可以运行在非Servlet容器的服务器(如Netty)上。

Spring在不断创新,不断发展。除了Spring框架之外,还有其他项目,如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等。需要记住的是,每个项目都有自己的源代码库、问题跟踪器和发布节奏。请参见 spring.io/projects 获取完整的 Spring 项目列表。


3. 设计理念

当你了解一个框架的时候,不仅要知道它的作用,而且要知道它所遵循的原则。以下是Spring框架的指导原则。

在每个层次上提供选择。Spring让你尽可能推迟设计决策。例如,您可以在不更改代码的情况下通过配置切换持久化提供程序。对于许多其他基础架构问题以及与第三方API的集成也是如此。

适应不同的需求。Spring 拥抱灵活性,对事情应该如何做并不主观臆断。它支持各种不同角度的应用需求。

保持强大的向后兼容性。Spring的演进经过精心的管理,以使各个版本之间几乎没有重大变化。Spring支持一系列精心挑选的JDK版本和第三方库,以方便维护依赖Spring的应用程序和库。

关心API的设计。Spring团队花了大量的心思和时间来制作通俗易懂,并在许多版本和多年的时间里都能一直使用的API。

为代码质量设定了高标准。Spring框架非常强调有意义的、最新的、准确的javadoc。它是极少数能够声称代码结构干净且包之间没有循环依赖的项目之一。


4.反馈和贡献

对于如何提出问题、诊断或调试问题,我们建议使用*,并且有一个问题页面列出了建议使用的标签。如果您相当肯定Spring框架中存在问题,或者想推荐一个功能,请使用GitHub问题页面

如果你有一个解决方案或建议的修复方法,你可以在Github上提交一个pull request。但是,请记住,除了最琐碎的问题,我们希望在问题跟踪器中提交一个单子,在该跟踪器中进行讨论并保留记录以备将来参考。

更多详情请参见 CONTRIBUTING 的顶层项目页面上的指南。


5.开始使用

如果您刚刚开始使用Spring,您可能希望创建一个基于Spring Boot的应用程序来开始使用Spring框架。Spring Boot提供了一种快速(且是建议的)方法来创建一个基于Spring的生产型应用程序。它基于Spring框架,偏向于约定而非配置,旨在让你尽快启动和运行。

你可以使用start.spring.io生成一个基本的项目,或者按照 "入门 "指南之一,如 "入门构建RESTful Web服务"。除了更容易理解之外,这些指南还非常注重任务实践,且大多数都是基于Spring Boot。它们还涵盖了Spring组合中的其他项目,你在解决某个特定问题时可能会考虑到这些项目。