xinrong2019 / xinrong2019.github.io

My Blog
https://xinrong2019.github.io
1 stars 1 forks source link

20190628 Spring Framework体系化学习 #78

Open xinrong2019 opened 5 years ago

xinrong2019 commented 5 years ago

Spring Framework体系化学习,基于5.1.8

基于工作经验,学习和实践Spring的知识体系,为更好的应用于工作中做准备。

xinrong2019 commented 5 years ago

学习目标

基于5.1.8,掌握体系化的Spring Framework知识

学习方法

首先撸两遍官方文档,然后撸书

xinrong2019 commented 5 years ago

概述

历史,设计理念,反馈,入门。

Spring框架概述

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

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

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

1 当我们说Spring这个词的时候,在说什么

术语“春天”在不同的背景下意味着不同的东西。它可以用来引用Spring Framework项目本身,它就是一切开始的地方。随着时间的推移,其他Spring项目已经构建在Spring Framework之上。大多数情况下,当人们说“春天”时,他们就意味着整个项目家族。本参考文档侧重于基础:Spring Framework本身。

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

关于模块的说明: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+上的类路径上都能正常工作。

xinrong2019 commented 5 years ago

2 Spring和Spring框架的历史

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

Spring Framework还支持依赖注入(JSR 330)和Common Annotations(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的帮助下,应用程序以devops和云友好的方式创建,Servlet容器嵌入并且变得微不足道。从Spring Framework 5开始,WebFlux应用程序甚至不直接使用Servlet API,并且可以在不是Servlet容器的服务器(例如Netty)上运行。

Spring继续创新并不断发展。除了Spring Framework之外,还有其他项目,例如Spring Boot,Spring Security,Spring Data,Spring Cloud,Spring Batch等。重要的是要记住每个项目都有自己的源代码存储库,问题跟踪器和发布节奏。有关Spring项目的完整列表,请参见spring.io/projects。

xinrong2019 commented 5 years ago

3 设计理念

当您了解框架时,重要的是不仅要知道它的作用,还要了解它遵循的原则。以下是Spring Framework的指导原则:

xinrong2019 commented 5 years ago

4 反馈和贡献

对于操作方法问题或诊断或调试问题,我们建议使用StackOverflow,我们有一个questions page列出了要使用的建议标签。如果您非常确定Spring Framework中存在问题或想要建议功能,请使用GitHub Issues

如果您有解决方案或建议的修复,您可以在Github上提交拉取请求。但是,请记住,对于除了最微不足道的问题之外的所有问题,我们希望在问题跟踪器中提交一张票据,进行讨论并留下记录以供将来参考。

有关更多详细信息,请参阅“贡献”顶级项目页面上的指南。

5 入门

如果您刚刚开始使用Spring,您可能希望通过创建基于Spring Boot的应用程序来开始使用Spring Framework。 Spring Boot提供了一种快速(和固执己见)的方式来创建一个生产就绪的基于Spring的应用程序。它基于Spring Framework,支持约定优于配置,旨在帮助您尽快启动和运行。

您可以使用start.spring.io生成基本项目,也可以按照"Getting Started" guides之一进行操作,例如“入门构建RESTful Web服务”。除了更容易理解之外,这些指南非常注重任务,而且大多数都基于Spring Boot。它们还涵盖了Spring组合中您在解决特定问题时可能需要考虑的其他项目。

xinrong2019 commented 5 years ago

下一篇,Core Technologies