浅谈Spring框架

350 阅读5分钟

Spring框架概述

Spring可以轻松创建Java企业应用程序。它提供了在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,并可根据应用程序的需要灵活地创建多种体系结构。从Spring Framework 5.0开始,Spring需要JDK 8+(Java SE 8+),并且已经为JDK 9提供了开箱即用的支持。

Spring支持范围广泛的应用场景。在大型企业中,应用程序通常存在很长时间,并且必须在JDK和应用服务器上运行,而这些服务器的升级周期超出了开发人员的控制范围。其他的可能以嵌入服务器的单一jar的形式运行,可能是在云计算中。还有其他可能是不需要服务器的独立应用程序(例如批处理或集成工作负载)。

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

1.“Spring”是什么意思

术语“Spring”在不同的背景下代表不同的东西。它可以用来引用Spring Framework项目本身,它就是一切开始的地方。随着时间的推移,其他Spring项目都是在Spring Framework基础之上搭建的。通常来说,当人们说“Spring”时,他们指的是整个Spring家族。而现在要说的是:Spring Framework本身。

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

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

2. Spring的历史和Spring框架

Spring出现于2003年,是对早期J2EE规范的复杂性的回应。虽然有些人认为Java EE和Spring处于竞争中,但Spring实际上是对Java EE的补充。Spring编程模型不包含Java EE平台规范; 相反,它集成了j2EE中精心挑选的个别规范:

Spring Framework还支持依赖注入(JSR 330)和公共注释(JSR 250)规范,应用程序开发人员可以选择使用这些规范而不是Spring Framework提供的Spring特定机制。

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

随着时间的推移,Java EE在应用程序开发中的角色已经发生了变化。在Java EE和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等。重要的是要记住每个项目都有自己的源代码存储库,问题跟踪器和版本节奏(release cadence)。有关Spring项目的完整列表,请参见spring.io/projects。

3.设计理念

当你了解一个框架时,不仅要了解它所遵循的原则,还要了解它遵循的原理。以下是Spring框架的指导原则:

  • 为每个层级提供选择。Spring允许你尽可能晚地推迟设计决策。例如,你可以通过配置切换持久性提供者,而无需更改代码。许多其他基础架构问题以及与第三方API的集成也是如此。

  • 容纳多种多样的观点。Spring支持灵活性,对于应该如何做事不刚愎自用。它以不同的角度支持广泛的应用程序需求。

  • 保持强大的向下兼容性。Spring的发展经过精心的管理,可以在版本之间进行一些重大改变。Spring支持精心挑选的JDK版本和第三方库,以便于维护依赖于Spring的应用程序和库。

  • 为代码质量设定高标准。Spring框架非常强调有意义的、最新的和准确的Javadoc。它是少数几个能够声明干净的代码结构的项目之一,在包之间没有循环依赖关系。

  • 为代码质量设定高标准。Spring Framework强调有意义,最新且准确的Javadoc。它是极少数项目之一,可以声称干净的代码结构,包之间没有循环依赖。

注:翻译有瑕疵,不敢在大佬面钱班门弄斧,仅供学习参考。如有错误之错,还望提出,谢谢。

参考文档:spring-framework-reference

感谢你花时间读到结尾!:D

后端一枚,默默搬砖撸代码,如果觉得不错欢迎关注我的公众号