Spring 核心概念 IOC/DI IOC容器 Bean

目录

一:代码书写现状

 二:核心思想


一:代码书写现状

          常规操作如上,但存在着问题,将项目上线后,需要将数据层进行更换,更换如下:

 数据层更换后,业务层也需要进行更换,更换如下:

            数据层和业务层的代码都进行了更换,那么源码也需要重新编译,重新测试,重新部署,重新发布,这些工作重新进行,那么成本也是会增加的,这些原因终究只有一条:由于我们在类里面进行了其他方法的实现,导致代码的耦合度提高。我们代码编写的原则就有一条,要追求低耦合。所以,在这里存在着一个问题,这里的耦合度过高,我们要想办法把这里的耦合度减小,既然是在业务层中编写代码将耦合度提高的,那么我们不如在这里不写,来将耦合度减小,实现代码如下:

          如上所示,耦合度是减小了,但是存在着问题:只存在着接口,一运行的话,那么就会报异常,NullPointerException异常,没有实现对象,那么我们要让程序运行怎么办,这里不就是没有实现对象而导致异常,你不就是要一个对象吗?你不要写对象了,我直接给你一个对象不就能让程序运行了嘛,这就是使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象思想,这样的问题解决方案思想被称为IOC( Inversion of Control):控制反转, 对象的创建控制权由程序转移到外部,这种思想称为控制反转

 二:核心思想

lOC思想

        Inversion of Control, 控制反转, 强调的是原来在 程序中创建Bean的权利反转给第三方。

        使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转

  • 问: 这种思想与Spring有什么关系呢?
  • 答:Spring技术对 lOC思想进行了实现

            Spring将这种思想给完成实现了,怎么做到的呢?其实也就是Spring提供了一个容器,称为IOC容器,用来充当IOC思想的"外部"。

   原来代码写法:

  现在代码写法:

  IOC容器负责对象的创建,初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean

         如图所示,IOC容器帮我们将service和dao层创建好了后,代码能成功运行起来吗?答案是不行,因为service的运行是依赖于dao的

 既然serviec是依赖于dao来运行的,巧了的是service与dao都是在IOC容器中的,那么IOC容器就帮你将service和dao之间的依赖关系给绑定好,也就是这个dao对象,IOC容器直接给你,让你的程序能直接运行,这种思想称为DI思想

           Dependency Injection, 依赖注入, 强调的Bean之 间关系,这种关系第三方负责去设置。

           在容器中建立Bean与Bean之间的依赖关系的整个过程,称为依赖注入

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

  • 使用IOC容器管理bean(IOC)

  • 在IOC容器内将有依赖关系的bean进行关系绑定(DI)

最终效果:

  • 使用对象时不仅可以直接从IOC容器中获取,并且获取到的bean已经绑定了所有的依赖关系
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值