Spring Framework 5.0.2 document 翻译-Over View

来源:互联网 发布:并发编程实战豆瓣 编辑:程序博客网 时间:2024/06/01 23:24

  1. 我们所说的“Spring”是什么意思

术语“spring”在不同的语境中指代不同的东西。它能够用来指代“spring framework”项目,spring framework项目正是一切的开始;随着发展,其他spring项目在spring framework项目的基础上建立起来。大多数情况下,当人们说“Spring”的时候,指的是spring全家桶。本文档重点讲述最基本的spring framework项目。

Spring Framework被划分为多个模块。一个应用可以选择需要的模块。处于核心地位的是core container的模块,包含配置模块和依赖注入机理。除此之外,Spring Framework对不同的应用体系结构分别提供了基本的支持,包括消息传递、事务数据、持久化和网络应用。它也提供了基于servlet的Spring MVC 网络应用框架,以及与此配套的Spring WebFlux 反应式网络应用框架。

(这些是无法理解的关于java9的论述)A note about modules: Spring’s framework jars allow for deployment to JDK 9’s module path ("Jigsaw"). For use in Jigsaw-enabled applications, the Spring Framework 5 jars come with "Automatic-Module-Name" manifest entries which define stable language-level module names ("spring.core", "spring.context" etc) independent from jar artifact names (the jars follow the same naming pattern with "-" instead of ".", e.g. "spring-core" and "spring-context"). Of course, Spring’s framework jars keep working fine on the classpath on both JDK 8 and 9.

2.Spring和Spring Framework的历史

因为早期的J2EE规范过于复杂,Spring在2003年应运而生。虽然有些人认为Spring和J2EE是竞争关系,但是实际上Spring只是J2EE的一种补足。Spring并没有完全遵守J2EE平台的规范,而是小心选择了其中几个独立的规范来遵守:
  • Servlet API (JSR 340)

  • WebSocket API (JSR 356)

  • Concurrency Utilities(并发工具) (JSR 236)

  • JSON Binding API (JSR 367)

  • Bean Validation (JSR 303)

  • JPA(Java Persistence API) (JSR 338)

  • JMS (Java Message Service)(JSR 914)

  • JTA/JCA setups for transaction coordination, if necessary.

Spring Framework 同样支持依赖注入(JSR330)和注解(JSR250)的J2EE规范。如果开发者不喜欢Spring Framework提供的Spring定制化的机理,也可以使用这两个规范。
至于Spring Framework 5.0,Spring 要求Java EE 7以上的版本,但是也提供了在运行时遇到就可以开箱即食的比较新的Java EE 8的API(例如Servlet 4.0,JSON Binding API)。这使得Spring完全兼容Tomcat 8和9、WebSphere9和JBoss EAP 7。
随着时间流逝,在应用开发过程中Java EE的角色也在进化。在Java EE和Spring 诞生的早些时候,开发的应用都要部署到应用服务器中。而在今天,在Spring Boot的帮助下,我们可以用一种devops-and-clude-friendly 的方式,通过其内嵌的servlet容器和微调来开发应用。和Spring Framework 5一样,一个WebFlux应用甚至可以不需要直接使用Servlet API并且可以使用非servlet容器的服务器容器(例如Netty)。
Spring始终在革新和进化。除了Spring Framework,还有许多其他项目,例如Spring Boot、Spring Security、Spring Data、Spring Cloud、Spring Batch等等。我们有必要知道每个项目都有它的独立的源码库、事件追踪者和发布周期。参考 spring.io/projects来查看所有的Spring Project。

3.设计哲学

当你学习一个框架时,重要的不仅仅是知道它做了什么,还有它是依据什么规律来这么做。以下是Spring Framework的设计指导规律。
  • 在每一个层次提供选择。Spring让你尽可能晚地去做有关设计的决策。例如,如果你要切换持久化服务提供者,你只需要修改配置,而不需要更改你的代码。对于其他的基础框架以及第三方框架的集成也是这个道理(原文The same is true for many other infrastructure concerns and integration with third-party APIs.)。
  • 容纳不同的观点。Spring拥有灵活性,并且在“how things shoud be down”这个问题是并不打算固执己见。针对不同的观点(perspective),它提供了多种应用需求。
  • 维持强大的向后兼容。Spring的进化发展一直秉承着小心谨慎的原则,以防止产生不同版本之间的不兼容点。Spring所指定的JDK版本范围和第三方库都是精挑细选的,因为这样将有利于哪些依赖Spring进行开发的应用和库的稳定。
  • 重视API设计。Spring团队将大量的时间和精力投入到API的设计中,这些API往往很直观并且可以在多个版本中延续使用很多年。
  • 为代码质量设定高标准。Spring Framework特别强调有意义的、即时的、精确的javadoc。Spring Framework是少数几个能够不通过包之间的循环依赖来说清楚代码框架结构的项目之一。

4.反馈和贡献

如果你有“how to”类型的问题或者在诊断代码和debug上遇到困难,我们推荐你使用StackOverflow,我们有一个questions page列出了建议你使用的tag。如果你真的确信是Spring Framework出现了问题,或者想要向我们建议一个新特性,请使用JIRA issue tracker。
如果你对Spring Framework有一个问题解决方案或者想要做一个建议修整,你可以在gitHub上面给我们提PR。但是请记住,除非是特别无关紧要的事情,我们希望你能在Issue tracker上面填写一份ticket。我们会在这上面讨论问题并且留下记录以供日后参考。
欲知更多细节,请参考CONTRIBUTING最高层项目页的指导行。

5.开干

如果你刚开始接触Spring,你可能会想要创建一个基于Spring Boot的应用来开始使用Spring Framework。Spring Boot提供了一个快速的(并且是武断的)方式来创建一个基于Spring的准产品应用。它基于Spring框架,比起配置更加依赖于惯例,这样都是为了让你尽可能快地打起精神并且运行起来。
你能够使用start.spring.io来生成一个基本的项目或者依据 "Getting Started" guides中的某一个,例如 Getting Started Building a RESTful Web Service来生成。在容易理解的同时,这些指导都是以具体的任务为核心,大部分都基于Spring Boot。这些指导也涉及了Spring全家桶的其他项目,在解决问题的过程中你也许会用到这些项目。

原创粉丝点击