原文地址:docs.spring.io/spring-fram…
概述
Spring使创建Java企业应用程序变得很容易。它提供了您在企业环境中使用Java语言所需的一切,支持Groovy和Kotlin作为JVM上的替代语言,以及根据应用程序的需要创建多种体系结构的灵活性。从Spring Framework 5.1开始,Spring需要JDK 8+,并提供对JDK 11 (LTS)开箱即用的支持。建议使用JDK 8u60作为Java 8的最小补丁版本,但一般建议使用最新的补丁版本。
Spring支持广泛的应用程序场景:在大型企业中,应用程序可能运行在JDK和应用服务器上,可能作为独立jar包(内嵌服务器)运行,可能在云环境中,还有一些可能是不需要服务器的独立应用程序(如批处理或集成工作负载)。
Spring是开源的。它有一个庞大而活跃的社区,基于各种不同的真实场景提供持续的完善。这帮助Spring在很长一段时间内成功地发展。
一、Spring是什么?
“Spring”在不同的上下文中代表的含义不同,一开始它用来指代Spring Framework项目本身,但随着时间的推移,其他Spring项目构建在Spring Framework项目之上。通常,当人们说“Spring”时,他们指的是整个项目家族。本参考文档关注的是Spring Framework项目本身。
Spring Framework分为多个模块,应用可以选择需要使用的模块,容器(container)是最核心的模块,其中包括配置模块和依赖注入机制。除此之外,Spring Framework为不同的应用程序架构提供基础支持,包括消息传递、事务、持久性以及we、基于servlet的Spring MVC web框架,以及Spring WebFlux响应式web框架。
二、回溯Spring与Spring Framework的历史
Spring出现于2003年,是为了应对早期J2EE规范的复杂性。虽然有些人认为Spring和Java EE是竞争对手,Spring编程模型不包含Java EE平台规范,但Spring实际上是Java EE的补充,它与EE中精心挑选的各个规范集成在一起:
-
Servlet API (JSR 340)
-
WebSocket API (JSR 356)
-
Concurrency Utilities (JSR 236)
-
JSON Binding API (JSR 367)
-
Bean Validation (JSR 303)
-
JPA (JSR 338)
-
JMS (JSR 914)
-
JTA/JCA
Spring框架还支持依赖注入(JSR 330)和公共注释(JSR 250)规范,应用程序开发人员可以选择使用这些规范来代替Spring框架提供的特定于Spring的机制。
Spring Framework 5.0至少需要Java EE 7(例如Servlet 3.1 +, JPA 2.1 +)版本,在Java EE 8版本中(例如Servlet 4.0, JSON Binding API)提供开箱即用的集成与更新的API。这使Spring与Tomcat 8和9、WebSphere 9和JBoss EAP 7完全兼容。
随着时间的推移,Java EE在应用程序开发中的角色已经演变。在Java EE和Spring的早期,创建应用程序是为了部署到应用服务器上。今天,在Spring Boot的帮助下,嵌入了Servlet容器,应用程序以一种对devops和云友好的方式创建。从Spring Framework 5开始,WebFlux应用程序甚至不直接使用Servlet API,可以运行在不是Servlet容器的服务器上(比如Netty)。
Spring继续创新和发展。除了Spring框架之外,还有其他项目,比如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等等。重要的是要记住,每个项目都有自己的源代码存储库、issue tracker和发布节奏。在spring.io/projects上可以看到 Spring项目的完整列表。
三、设计理念
当你学习一个框架时,不仅要知道它是做什么的,还要知道它遵循什么原则。下面是Spring Framework的指导原则:
-
提供选择:Spring允许您尽可能晚地推迟设计决策。例如,您可以通过配置来切换持久性提供程序,而不需要更改代码。对于许多其他基础设施问题以及与第三方api的集成也是如此。
-
容纳不同的观点。Spring拥抱灵活性,对于事情应该如何做并不固执己见。它以不同的视角支持广泛的应用程序需求。
-
保持强大的向后兼容性。Spring的发展经过了精心的管理,在版本之间强制进行了很少的中断性更改。Spring支持精心选择的一系列JDK版本和第三方库,以促进依赖于Spring的应用程序和库的维护。
-
关注API设计。Spring团队花了很多心思和时间来制作直观的api,这些api可以支持多个版本和多年。
-
为代码质量设置高标准。Spring框架非常强调有意义的、实时的和准确的javadoc。它是极少数能够声明代码结构干净且包之间没有循环依赖关系的项目之一。
四、反馈和贡献
对于如何提问或诊断调试问题,我们建议使用 Stack Overflow.。点击stackoverflow.com/questions/t…查看在Stack Overflow上使用的建议标签列表。如果你相当确定Spring框架有问题,或者想建议一个特性,请使用GitHub issues。
如果你有一个解决方案或建议修复,你可以在Github上提交pull request。
五、Getting Started
如果您刚刚开始使用Spring,您可能希望通过创建一个基于Spring boot的应用程序来开始使用Spring框架。Spring Boot提供了一种快速的方法来创建一个基于Spring的产品应用程序。它基于Spring框架,支持约定而不是配置,旨在让您尽可能快地启动和运行。
你可以使用start.spring.io/来生成一个基本的项目,或者遵循“入门”指南中的一个,比如《入门构建RESTful Web服务》。这些指南不仅易于理解,而且非常注重任务结果,且大多数都基于Spring Boot;其中还涵盖了其他项目与Spring的组合使用,在解决特定问题时可能会使用到。