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

目录

一、引言

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

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁岁岁平安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值