一、Spring 是什么
Spring是一个JEE开发框架,开源,轻量级,功能强大。
JEE – Java Enterprise Edition/Java企业版: 主要用于开发企业软件的Java版本。企业软件例子:会计软件、帐单管理、业务流程管理、CMS、CRM、ERP等。
二、Spring相关概念
2.1 Spring家族
-
官网:spring.io,从官网我们可以大概了解到:
- Spring能做什么:用以开发web、微服务以及分布式系统等,光这三块就已经占了JavaEE开发的九成多。
- Spring并不是单一的一个技术,而是一个大家族,可以从官网的
Projects中查看其包含的所有技术。
-
Spring发展到今天已经形成了一种开发的生态圈,Spring提供了若干个项目,每个项目用于完成特定的功能。
- Spring已形成了完整的生态圈,也就是说我们可以完全使用Spring技术完成整个项目的构建、设计与开发。
- Spring有若干个项目,可以根据需要自行选择,把这些个项目组合起来,起了一个名称叫【全家桶】,如下图所示
说明: 图中的图标都代表什么含义,可以进入
https://spring.io/projects网站进行对比查看。 这些技术并不是所有的都需要学习,额外需要重点关注Spring Framework、SpringBoot和SpringCloud: - Spring Framework:Spring框架,是Spring中最早最核心的技术,也是所有其他技术的基础。
- SpringBoot:Spring是来简化开发,而SpringBoot是来帮助Spring在简化的基础上能更快速进行开发。
- SpringCloud:这个是用来做分布式之微服务架构的相关开发。
除了上面的这三个技术外,还有很多其他的技术,也比较流行,如SpringData,SpringSecurity等,这些都可以被应用在我们的项目中。我们今天所学习的Spring其实指的是【Spring Framework】。
2.2 Spring系统架构
通常我们说spring指的是Spring Framework,那么它的框架是怎么样的呢?
以下是spring的系统架构图:
(1)核心层
- Core Container:核心容器,这个模块是Spring最核心的模块,其他的都需要依赖该模块。(容器,就是用来装东西的,装什么呢?在Java中就是用来装对象。使用容器层对项目中的对象进行统一管理)
(2)AOP层
- AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下对其进行功能增强
- Aspects:AOP是思想,Aspects是对AOP思想的具体实现。Spring-aspects 用来集成AspectJ框架,AspectJ是一个强大的AOP框架,Spring发现其已经做的很好了,所以大胆地将其收录到Spring技术栈。但是也请注意Spring中的AOP实现与AspectsJ的底层实现是有不一样的。
(3)数据层
- Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术
- Data Integration:数据集成,Spring支持整合其他的数据层解决方案,比如Mybatis
- Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现。
(4)Web层
-
Spring为web层开发提供的一整套完备的解决方案。 提供了基于Spring的Web服务的基础架构,包括核心的HTTP集成、Servlet过滤器、Spring HTTP Invoker等。它还支持与其他Web框架和HTTP技术(如Hessian、Burlap)的集成。
Spring提供了两个Web框架:Spring Web MVC和Spring WebFlux。最新的5.x版本中右面的portlet组件已经被废弃掉,同时增加了用于异步响应式处理的WebFlux组件。
Spring Web MVC是最初包含在Spring框架中的Web框架,是Spring MVC的一个实现,专为Servlet API和Servlet容器设计。它依赖于Spring Web,并在此基础上增加了对Spring MVC的支持,包括RESTful协议、国际化等模块。后来添加的Spring WebFlux是一个响应式堆栈的Web框架。
Web MVC和WebFlux可以共存,并作为可选模块工作,因此可以根据应用程序的要求使用其中一个或两个都不使用。
(5)Test层
- 该模块主要为测试提供支持的,通过 JUnit 和 TestNG 组件支持单元测试和集成测试。
更具体可参看博客:www.cnblogs.com/tanghaorong…