目录
一、引言
(1)如今的代码书写现状
1、业务层
2、数据层
3、假如当项目上线发布之后,想把数据层的实现换一下
二、核心概念
(1)IoC( Inversion of Control ) 控制反转
(2)Spring 技术对 IoC 思想进行了实现。
(3)DI ( Dependency Injection ) 依赖注入
三、总结
(1)业务层实现、数据层实现最后的样子。
(2)核心概念的目标。
1、目标:充分解耦。
2、最终效果
一、引言
(1)如今的代码书写现状
1、业务层
由下图知:
这是一个业务层的实现类,实现业务层的接口。然后再创建一个数据层的接口(private BookDao ....)给出一个数据层的实现,再使用这个接口调对应的操作。
2、数据层
由下图知:
这是是数据层的实现类。
3、假如当项目上线发布之后,想把数据层的实现换一下
这时就出现了一个问题。(下面这个地方要替换)
变成下面这样
这时相当于你的源代码动了,就需要重新编译一下、重新测试、重新部署以及重新发布。造成这样的原因就是:我们在类里面写了一些其它的一些实现,导致我们的代码耦合度偏高。
而我们写代码要求的是:低耦合度。
解决:修改刚刚上面的代码。(不写实现,只剩下接口)
但是注意:
这样写程序运行肯定也会报错:没有实现对象。所以这样:使用对象时,在程序中不要主动使用 new 产生对象,转换为由外部提供对象。这种思想就叫做 "IoC"。
二、核心概念
(1)IoC( Inversion of Control ) 控制反转
1、解释:对象的创建的控制权由程序转移到外部,这种思想称为控制反转。
2、也就是:使用对象时,由自己主动 new 产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部。
(就是对象的创建控制权发生变化。程序创建——>外部创建,为了一件事:" 解耦 ")
(2)Spring 技术对 IoC 思想进行了实现。
1、Spring 提供了一个容器,称为 IoC 容器,用来充当 IoC 思想中的 " 外部 "。
(在系统架构图中有一个:Core Container(核心容器) )
2、所以在 Spring 框架技术当中,IoC 可以理解成由主动 new 产生对象,转换为由 IoC 容器提供对象。
3、IoC 容器要管理对象的创建和初始化过程。IoC 容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在 Ioc 容器中统称为 Bean。
(3)DI ( Dependency Injection ) 依赖注入
1、解释:在容器中建立 bean 与 bean 之间的依赖关系的整个过程,称为依赖注入。
(是两个有关系才会绑定依赖)
三、总结
(1)业务层实现、数据层实现最后的样子。
(2)核心概念的目标。
1、目标:充分解耦。
- 使用 IoC 容器管理 bean ( "IoC" 的思想)
- 在 IoC 容器内将有依赖关系的 bean 进行关系绑定 ( "DI" 的思想)
2、最终效果
使用对象时不仅可以直接从 IoC 容器中获取,并且获取到的 bean(对象) 已经绑定了所有的依赖关系。既能充分解耦,也可以保证程序的运行。