1. Spring Framework 官方文档中文版—Overview

Spring 让创建企业级Java应用变得更加容易。它提供了你在Java企业级应用开发中所需要的一切,支持Groovy 和 Kotlin作为基于JVM上的替代语言,根据应用程序的需要,可以灵活的创建不同种类型的架构。Spring Framework 5.0 需要JDK 8+ (Java SE 8+),为JDK 9提供开箱即用的支持。

Spring支持广泛的应用程序场景。在大型企业中,应用程序经常会存在一个较长的时间,并且是运行在JDK上,其升级周期超过了开发人员的控制范围。其他的程序可能以一个jar文件嵌入到服务器中来运行,可能在一个云环境中。另一些可能是不需要服务器的独立应用程序(如批处理程序或集成负载工作)。

Spring是开源的。它拥有一个庞大、活跃的社区来持续提供基于各种现实用例的反馈。这帮助了Spring成功的在相当长的时间内迭代,发展。

“Spring”的含义

“Spring”这个单词在不同的场景下表达着不同的含义。它可以用来代指Spring Framework项目本身,这就是开始的地方。随着时间推移,其他的Spring项目已经构建在Spring Framework至上。很多时候,大家说的”Spring“,是指整个项目家族。那么此参考文档的基本关注点是:Spring Framework项目本身

Spring Framework被分成了多个模块。应用程序可以选择它们所需要的模块。其中最关键的是核心模块,包括配置模块和依赖注入机制(DI)。除此之外,Spring Framework为不同的应用程序架构提供了基础的支持,包括消息,数据处理,持久化和web服务等。也包括了基于Servlet的Spring MVC web框架,同时还有响应式web框架Spring WebFlux。

关于模块的一个主意事项:Spring框架的jar包,可以被部署到Java9的模块路径下(“Jigsaw”)。在使用了Jigsaw的应用程序中,Spring Framework的jar带有自动命名的功能,它定义稳定的语言级模块名称(例如"spring.core","spring.context"等)独立于jar工件名称(jar文件遵循相同的命名模式使用“-”号代替"."号,例如“spring-core”和“spring-context”)。当然,Spring Framework的框架的jar在JDK 8和9的类路径上可以正常工作。

Spring和Spring Framework的历史

Spring的出现是在2003年,是为了应对早期J2EE复杂的规范。虽然有观点认为Java EE和Spring是竞争的关系,但实际上它们是相辅相成的。Spring的编程模型不受制于Java EE平台规范,相反,它整合了从Java EE挑选的个别规范:

Spring Framework也支持依赖注入(JSR 330)和通用的注解(JSR 250)规范,程序开发人员可以使用其来代替Spring的特有机制。

原文:The Spring Framework also supports the Dependency Injection (JSR 330) and Common Annotations (JSR 250) specifications, which application developers may choose to use instead of the Spring-specific mechanisms provided by the Spring Framework.

在Spring Framework 5.0中,Spring需要最低为Java EE 7(例如:Servlet 3.1+, JPA 2.1+),同时,集成了新Java EE 8的新API并且开箱即用。这使Spring高度兼容比如Tomcat 8和9,WebSphere 9和JBoss EAP 7。

随着时间的推移,Java EE在应用中的角色已经发生了变化。早期的Java EE和Spring,应用是被部署到应用服务器中。如今,在Spring boot的帮助下应用会在devops中或云友好的环境中使用servlet容器和作一些细微改变被创建。而在Spring Framework 5中,WebFlux应用甚至不会直接使用Servlet API而运行在服务上(例如Netty),而不是Servlet容器。

Spring会继续创新和发展。越过Spring Framework,还有其他的项目,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等等。要着重的记住,每一个项目都有它自己的源代码仓库,问题追踪(issue),发布节点。点击spring.io/projects来查看Spring完整的项目列表。

设计理念

当你学习一个框架的时候,不仅仅只需要知道它是用来做什么,还要知道它遵循什么原则。下面给出的是Spring Framework的指导原则:

  • 在所有层面提供选择。Spring让你尽可能晚的推迟设计决策。例如,你可以在不修改代码的基础上通过配置文件来获得持续的帮助。对于许多其它的基础架构和第三方API基础也是如此。

  • 包含多个视角。Spring是灵活的,对于事情的处理方式它不会一成不变。它会用不同的视角来支持非常广泛的应用程序需求。

  • 维持非常强的向后兼容性。在版本之间,Spring被谨慎的管理以去应对少量的重大变化。Spring支持一定范围的JDK版本和第三方库,以便于依赖于Spring的应用和库的维护。

原文:Maintain strong backward compatibility. Spring’s evolution has been carefully managed to force few breaking changes between versions. Spring supports a carefully chosen range of JDK versions and third-party libraries to facilitate maintenance of applications and libraries that depend on Spring.

  • 着重于API的设计。Spring团队投入大量的时间和思考去制作直观的、在很多版本很多年都保持不变的API。

  • 设置高标准的代码。Spring Framework着重于一个易懂,具有时效性,准确的Javadoc。它是为数不多的,可以做到保持干净的代码结构并且包之间没有循环依赖的项目之一。

反馈和贡献

关于如何提出问题,诊断,调试问题,我们建议使用StackOverflow,我们也提供一个问题网页,其中列出了一些问题标签可以点击查看。如果你有相当的把握发现了Spring Framework中有某个问题,或者有好的建议,请使用JIRA issue tracker

如果你有好的解决方案或建议,你可以在GitHub提交一个pull request。然而,需要记住的是,除了无关紧要的问题外,我们希望能够在issue tracker中讨论,留下记录以供将来参考。

更详细的内容请参考在CONTRIBUTING的指南。

入门指南

如果你刚刚使用了Spring,你可能会希望基于Spring Boot来创建一个Spring应用。Spring Boot可以快速创建基于Spring的,直接可用于生产的项目。它基于Spring Framework,支持约定优于配置,它可以让你尽可能快的上手。

你可以使用start.spring.io来创建一个基础工程,也可以使用Getting Started中某个文档。例如开始创建一个RESTful风格的Web服务。除了容易理解,这些指南也非常基于任务(task focused),而且他们大部分是基于Spring Boot的。他们还涵盖了一些其他的项目,你可以在解决某特定问题时来考虑他们。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容