Spring(核心概念:IoC/DI思想)

发布于:2024-06-25 ⋅ 阅读:(140) ⋅ 点赞:(0)

目录

一、引言

(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(对象) 已经绑定了所有的依赖关系。既能充分解耦,也可以保证程序的运行。


网站公告

今日签到

点亮在社区的每一天
去签到