本教程结合了官方文档,网上的各种教程在加上个人的多年开发经验组合而成,是一套全面并且权威的教程

1. Spring Framework

视频教程地址open in new window

Spring家族囊括很多,包括Spring Framework,Spring Boot,Spring Data,Spring Cloud,Spring Security等等,本教程特指Spring Framework(框架)教程,是Spring家族的核心和基础

Spring框架为现代Java的企业应用程序提供了全面的编程和配置模型。

Spring的一个关键目的,就是让开发人员专注于应用程序的业务逻辑。

Spring降低了Java开发人员的门槛,让Java成为如今的语言之王,所有的Java程序员都应该投入Spring的怀抱。

2. Spring 简介

Spring Framework Runntime:

image-20210828174653727

Spring框架分为以下几个模块:

  1. Core – Core是Spring得以运行的核心,主要包括IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP等内容。
  2. Testing – 测试是Spring中非常重要的一个模块,主要包括Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient等内容。
  3. Data Access – 这一部分是对数据库的访问相关,包括Transactions, DAO Support, JDBC, O/R Mapping, XML Marshalling等内容。
  4. Web Servlet – 传统的对Web Servlet的支持,包括Spring MVC, WebSocket, SockJS, STOMP Messaging等内容。
  5. Web Reactive – 这是Spring5新增的对于响应式系统的支持,包括Spring WebFlux, WebClient, WebSocket等。
  6. Integration – 是对第三方系统的支持,包括Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Caching等常用的第三方系统。
  7. Languages – 最后是对其他JVM语言的支持,包括Kotlin, Groovy等动态语言。

Spring Framework被分成了很多个模块,我们在构建应用程序的时候可以自由选择使用哪个模块。

最核心的模块是核心容器: 包括配置模块和依赖注入机制。

除此之外,Spring Framework提供了对不同应用架构的基础支持。

他还包括了Servlet-based Spring MVC web framework和最新的响应式Spring WebFlux reactive web framework。

我们将全面学习Spring的各个模块的知识

3. 模块介绍

3.1 Core核心技术

Spring的核心技术是Spring中最为重要的内容,核心技术中最重要的两个内容是IOC和AOP。

IOC: 控制反转,依赖注入

AOP:面向切面编程

除了IOC和AOP,还提供了以下技术:

  1. Events:Spring提供了很方便的事件的处理机制,包括事件类ApplicationEvent和事件监听类ApplicationListener。如果实现了ApplicationListener接口的bean部署到Spring容器中,则每次ApplicationEvent发布到ApplicationContext时,都会通知该bean。
  2. Resources:资源加载,比如Url资源的加载,配置文件xml的加载
  3. i18n:国际化,多语言
  4. Validation:数据校验
  5. Data Binding: 数据绑定
  6. Type Conversion:类型转换,SpringMVC中参数的接收就使用到了
  7. SpEL: SpEL的全称叫做Spring Expression Language。通常是为了在XML或者注解里面方便求值用的,通过编写##{ }这样的格式,即可使用

3.2 Testing 测试

Spring团队提倡测试驱动开发(TDD)。

Spring团队发现正确使用控制反转(IoC)肯定会使单元测试和集成测试更容易(因为类的setter方法和适当的构造函数的存在使得它们更容易在测试中连接在一起而不必设置服务定位器注册表和类似结构)。

3.3 Data Access

通过Spring可以方便的进行事务管理,并且为各种数据访问技术(例如JDBC,Hibernate或JPA)提供了一致性的DAO接口,从而可以轻松地在上述持久性技术之间进行切换,不需要考虑对各种数据访问技术的适配问题。

3.4 Web Servlet

Spring提供了Spring MVC框架来实现对web的支持,与其他许多Web框架一样,Spring MVC围绕前端控制器模式进行设计,在该模式下,中央Servlet DispatcherServlet提供了用于请求处理的共享算法,而实际工作是由可配置的委托组件执行的。 该模型非常灵活,并支持多种工作流程。

与任何Servlet一样,都需要根据Servlet规范使用Java配置或在web.xml中声明和映射DispatcherServlet。 反过来,DispatcherServlet使用Spring配置发现请求映射,视图解析,异常处理等所需的委托组件。

3.5 Integration

整合或者集成,是对第三方系统的支持,包括Remoting, JMS, JCA, JMX, Email, Tasks, Scheduling, Caching等常用的第三方系统。