Spring 可以轻松创建 Java 企业级应用程序. 它提供了在企业级应用中使用 Java 语言所需的一切, 包括使用 Groovy 和 Kotlin 作为 JVM 上的替代语言, 并可根据应用程序的需要灵活地创建多种体系结构. 从 Spring Framework 5.0 开始, Spring 需要 JDK 8+(Java SE 8+), 并且已经为 JDK 11 提供了开箱即用的支持.
Spring 支持的应用场景非常广泛. 在大型企业环境中, 应用程序通常会运行很长时间, 并且需要在官方不再支持的老版本 JDK 和应用程序服务器上运行. 也可能作为单个 jar 包运行在嵌入型服务器中, 也有可能在云环境中运行, 还有一些可能是不需要服务器的独立应用程序(例如批处理或集成工作负载).
Spring 是开源的. 它拥有一个庞大而活跃的社区, 社区会根据各种各样的实际使用情况提供持续的反馈, 这有助于 Spring 在很长一段时间内的良好发展.
1. "Spring" 是什么?
"Spring" 在不同的语境下意味着不同的东西. 它可以用来代指 Spring Framework 本身, 这是 Spring 家族的基础. 随着时间的推移, 其他 Spring 项目已经构建在 Spring Framework 之上. 大多数情况下, 当人们说 "Spring" 时, 他们指的是整个项目家族. 本参考文档侧重于基础: Spring Framework 本身.
Spring 框架分为几个模块. 应用程序可以选择所需的模块. 最核心的是包括配置模型和依赖注入机制的核心容器模块. 除此之外, Spring Framework 还为不同的应用程序体系结构提供了基础支持, 包括消息机制, 数据的事务和持久化以及 web. 它还包括基于 Servlet 的 Spring MVC Web 框架, 以及响应式 Web 框架 Spring WebFlux.
关于模块的说明: Spring 的框架 jar 包允许部署到 JDK 9 的模块路径中("Jigsaw"). 为了在支持 Jigsaw 的应用程序中使用, Spring Framework 5 的 jar 包带有 "Automatic-Module-Name" 条目清单, 它们定义了独立于 jar 包的固定语言级模块名称, 例如 "spring.core","spring.context" 等.(jar 包使用相同的命名模式, 使用 "-" 代替 ".", 例如 "spring-core" 和 "spring-context"). 当然, Spring 框架 jar 包在 JDK 8 和 9 上都能正常工作.
2. Spring 的历史和 Spring 框架
Spring 成立于 2003 年, 是对早期 J2EE 规范的复杂性做出的响应. 虽然有些人认为 Java EE 和 Spring 是竞争关系, 但 Spring 实际上与 Java EE 互补. Spring 编程模型不包含 Java EE 平台规范, 但它集成了 Java EE 体系中精心挑选的几个规范:
- Servlet API (JSR 340 https://jcp.org/en/jsr/detail?id=340 )
- WebSocket API (JSR 356 https://www.jcp.org/en/jsr/detail?id=356 )
并发实用程序 (JSR 236 https://www.jcp.org/en/jsr/detail?id=236 )
JSON 绑定 API (JSR 367 https://jcp.org/en/jsr/detail?id=367 )
Bean 验证 (JSR 303 https://jcp.org/en/jsr/detail?id=303 )
- JPA (JSR 338 https://jcp.org/en/jsr/detail?id=338 )
- JMS (JSR 914 https://jcp.org/en/jsr/detail?id=914 )
必要时用于事务协调的 JTA/JCA 设置
Spring Framework 还支持依赖注入 (JSR330 https://www.jcp.org/en/jsr/detail?id=330 ) 和公共注解 (JSR 250 https://jcp.org/en/jsr/detail?id=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 的帮助下, 应用程序以 devops 以及云计算友好的方式创建, Servlet 容器嵌入到程序内部, 并且变得没那么重要了. 从 Spring Framework 5 开始, WebFlux 应用程序可以不直接使用 Servlet API, 并且可以在不是 Servlet 容器的服务器上运行, 例如 Netty.
Spring 持续创新并不断发展. 除了 Spring Framework 之外, 还有其他项目, 例如 Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch 等. 重要的是, 要记住每个项目都有自己的源代码存储库, 问题跟踪器和发布节奏. 有关 Spring 项目的完整列表, 请参见 https://spring.io/projects .
3. 设计理念
当你了解框架时, 重要的是不仅要知道它的作用, 还要了解它遵循的原则. 以下是 Spring Framework 的指导原则:
提供各个层面的选择. Spring 允许您尽可能晚地推迟设计决策. 例如, 您可以通过配置切换持久性提供程序, 而无需更改代码. 许多其他基础架构和第三方 API 的集成也是如此.
适应不同的观点. Spring 拥抱灵活性, 也不会顽固的认为事情该如何做. 它以不同的视角支持广泛的应用需求.
保持强大的向后兼容性. Spring 的演变经过精心设计, 在版本之间会进行一些重大改变. Spring 支持精心挑选的一系列 JDK 版本和第三方库, 以便于依赖 Spring 的应用程序和库进行维护.
重视 API 设计. Spring 团队花了很多心思和时间来制作直观的 API, 这些 API 在很多版本和多年中都有用.
为代码质量设定高标准. Spring Framework 非常强调有意义, 最新和准确的 javadoc. 它是极少数可以声称代码整洁且包之间没有循环依赖的项目之一.
4. 反馈和贡献
对于如何提问, 诊断或调试问题, 我们建议使用 Stack Overflow, 我们有一个问题页面 https://spring.io/questions 列出了建议使用的标签. 如果您非常确定 Spring Framework 中存在问题或想要在功能上给出建议, 请使用 JIRA 问题跟踪器 https://jira.spring.io/browse/spr .
如果您有解决思路或建议的修复方法, 您可以在 GitHub 上提交拉取请求 . 但是请记住, 除了很小的问题以外, 我们希望你在问题跟踪器中提交一条记录, 在那里进行讨论并留下记录以供将来参考.
更多详细信息, 请参阅项目根目录中 "贡献" 页面上的指南.
5. 入门
如果你刚刚开始使用 Spring, 你可能希望通过创建基于 Spring Boot 的应用程序来开始使用 Spring Framework .Spring Boot 提供了一种快速且固定的方式来创建一个可用于生产环境的基于 Spring 的应用程序. 它基于 Spring Framework, 倾向于约定优于配置, 旨在帮助您尽快启动和运行.
您可以使用 https://start.spring.io/ 生成基本项目, 也可以按照入门指南 https://spring.io/guides 进行操作, 例如构建 RESTful Web 服务入门 https://spring.io/guides/gs/rest-service/ . 这些指南非常容易理解且目标明确, 大多数都基于 Spring Boot. 它们还涵盖了 Spring 家族中在解决特定问题时可能需要考虑的其他项目.
我的 CSDN: https://blog.csdn.net/liweitao7610
我的博客园: https://www.cnblogs.com/aotian/
我的简书: https://www.jianshu.com/u/6b6e162f1fdc
来源: https://www.cnblogs.com/aotian/p/11029911.html