1. 初始 Spring

1.1 Spring 家族


(相关资料图)

​​

说明:

图中的图标都代表什么含义,可以进入https://spring.io/projects​ 网站进行对比查看。

这些技术并不是所有的都需要学习,额外需要重点关注Spring Framework​、SpringBoot​ 和SpringCloud​:

1.2 了解 Spring 发展史

​​

Spring 发展史

本节介绍了 Spring 家族与 Spring 的发展史,需要大家重点掌握的是:

2. Spring 系统架构

2.1 系统架构图

​​

​​

(1)核心层

(2)AOP 层

(3)数据层

(4)Web 层

(5)Test 层

2.2 课程学习路线

介绍完 Spring 的体系结构后,从中我们可以得出对于 Spring 的学习主要包含四部分内容,分别是:

​​

3. Spring 核心概念

在 Spring 核心概念这部分内容中主要包含IOC/DI​、IOC容器​ 和Bean​,那么问题就来了,这些都是什么呢?

3.1 目前项目存在的问题

要想解答这个问题,就需要先分析下目前咱们代码在编写过程中遇到的问题:

​​

(1)业务层需要调用数据层的方法,就需要在业务层 new 数据层的对象

(2)如果数据层的实现类发生变化,那么业务层的代码也需要跟着改变,发生变更后,都需要进行编译打包和重部署

(3)所以,现在代码在编写的过程中存在的问题是:耦合度偏高 ——> 牵一发而动全身

针对这个问题,该如何解决呢?

​​

我们就想,如果能把框中的内容给去掉,不就可以降低依赖了么,但是又会引入新的问题,去掉以后程序能运行么?

答案肯定是不行,因为 bookDao 没有赋值为 Null,强行运行就会出空指针异常。

所以现在的问题就是,业务层不想 new 对象,运行的时候又需要这个对象,该咋办呢?

针对这个问题,Spring 就提出了一个解决方案:

这种实现思就是 Spring 的一个核心概念

3.2 IOC、IOC 容器、Bean、DI

  1. IOC(Inversion of Control)控制反转

(1)什么是控制反转呢?

(2)Spring 和 IOC 之间的关系是什么呢?

(3)IOC 容器的作用以及内部存放的是什么?

(4)当 IOC 容器中创建好 service 和 dao 对象后,程序能正确执行么?

像这种在容器中建立对象与对象之间的绑定关系就要用到 DI:

  1. DI(Dependency Injection)依赖注入

​​

(1)什么是依赖注入呢?

(2)IOC 容器中哪些 bean 之间要建立依赖关系呢?

介绍完 Spring 的 IOC 和 DI 的概念后,我们会发现这两个概念的最终目标就是:充分解耦,具体实现靠:

3.3 核心概念小结

这节比较重要,重点要理解什么是IOC/DI思想​、什么是IOC容器​ 和什么是Bean​:

(1)什么 IOC/DI 思想?

(2)什么是 IOC 容器?

Spring 创建了一个容器用来存放所创建的对象,这个容器就叫 IOC 容器

(3)什么是 Bean?

容器中所存放的一个个对象就叫 Bean 或 Bean 对象

推荐内容