什么是Spring Framework?

Spring使创建Java企业级应用程序变得容易。它提供了在企业环境中使用 Java 语言所需的一切,包括:支持 Groovy 和 Kotlin 作为 JVM 上的替代语言,可以根据应用程序的需要灵活地创建多种架构。从Spring Framework 6.0版本开始 ,最低支持Java 17
Spring支持的应用场景非常广泛。在大型企业中,应用程序往往长期存在,必须运行在JDK和应用服务器上,其升级周期不受开发人员控制。非大型企业应用,可能作为一个嵌入服务器的 jar 运行,也可能在云环境中。还有一些应用,可能是不需要服务器的独立应用程序(例如:批处理、集成工作负载)。
Spring是开源的。它有一个庞大而活跃的社区,可以根据各种现实世界的用例提供持续的反馈。这帮助Spring在很长一段时间内成功发展。

1.“Spring”是什么意思

“Spring”这个词在不同的语境中有不同的含义。它可以用来指代Spring框架项目本身,这是一切的起点。随着时间的推移,在Spring框架之上建立了其他的Spring项目。大多数情况下,当人们说“Spring”时,他们指的是整个项目。

 

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

 

关于模块的注意事项:Spring的框架jar包允许部署到JDK 9的模块路径(“Jigsaw”)下。为了在支持Jigsaw的应用程序中使用,Spring Framework 5的jar包带有“Automatic-Module-Name”清单条目,它定义了稳定的语言级模块名称(“spring.core”、“spring.context”等),独立于jar工件名称(jar 遵循相同的命名模式,使用“-”而不是“.”,例如“spring-core”和“spring-context”)。当然,Spring的框架jar也可以在JDK 8和9+的类路径上正常工作。

2.Spring和Spring框架的历史

Spring于2003 年应运而生,以应对早期J2EE规范的复杂性。虽然有些人认为Java EE及其现代继承者Jakarta EE与Spring竞争,但实际上它们是互补的。Spring编程模型不包含Jakarta EE平台规范;相反,它集成了从传统EE中精心挑选的个别规范:

 

Spring Framework还支持Dependency Injection(JSR 330) 和Common Annotations(JSR 250) 规范,应用程序开发人员可以选择使用这些规范来代替Spring Framework提供的特定于 Spring 的机制。最初,这些是基于常见的 javax 包。


从 Spring Framework 6.0 开始,Spring已经升级到Jakarta EE 9级别(例如 Servlet 5.0+、JPA 3.0+),基于 jakarta 命名空间而不是传统的 javax 包。以 EE 9 作为最低标准并支持 EE 10,Spring 准备为 Jakarta EE API 的进一步发展提供开箱即用的支持。 Spring Framework 6.0 与作为 Web 服务器的 Tomcat 10.1、Jetty 11 和 Undertow 2.3 以及 Hibernate ORM 6.1 完全兼容。


随着时间的推移,Java/Jakarta EE 在应用程序开发中的作用发生了变化。在 J2EE 和Spring的早期,创建应用程序是为了部署到应用程序服务器。如今,在 Spring Boot 的帮助下,应用程序以开发运维和云友好的方式创建,嵌入了 Servlet 容器并且更改起来微不足道。从 Spring Framework 5 开始,WebFlux 应用程序甚至不直接使用 Servlet API,而是可以在非Servlet容器的服务器(例如 Netty)上运行。


Spring不断创新和发展。除了Spring Framework,还有其他项目,例如 Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch 等。重要的是要记住,每个项目都有自己的源代码存储库、问题跟踪器和发布节奏。

 

3.设计理念

当您了解一个框架时,重要的是不仅要了解它的作用,还要了解它遵循的原则。以下是 Spring 框架的指导原则:

-在每个级别提供选择。 Spring 让您尽可能晚地推迟设计决策。例如,您可以在不更改代码的情况下通过配置切换持久性提供程序。许多其他基础设施问题和与第三方 API 的集成也是如此。


-包容不同的观点。 Spring 拥抱灵活性,并且对事情应该如何完成没有固执己见。它以不同的视角支持广泛的应用需求。


-保持强大的向后兼容性。 Spring 的演变经过精心管理,以强制在版本之间进行一些重大更改。 Spring支持精心选择的一系列JDK版本和第三方库,以方便维护依赖于 Spring 的应用程序和库。


-关心API设计。 Spring 团队投入了大量的心思和时间来制作直观的 API,并且可以跨多个版本和多年使用。


-为代码质量设定高标准。 Spring 框架非常强调有意义的、最新的和准确的 javadoc。它是极少数可以声称代码结构清晰且包之间没有循环依赖关系的项目之一。

 

posted @ 2023-04-17 11:31  pyt123456  阅读(238)  评论(0)    收藏  举报