Spring3学习笔记(1)

本节中重点在描述概念。

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

  •   问题产生

   在java程序中我们在类之间的调用一般都是采用主动调用的方式,比如Student类调用Person类等等这样的操作,在类的调用过程中,逐渐被调用的类越来越多,这样就造成了类之间的高度耦合,当我们测试或者功能复用的时候,就会产生很大的连带效应,给我们造成诸多不便

  •  问题解决                                                                                                                                     
       问题的产生就会伴随着问题的解决,我们的解决思路是这样的:能不能找一个平台,将我们的类都给管理起来,当我们新建的一个类需要使用这个平台中的类的时候,我们让这个平台给我们拿过来?答案当然就是IOC,这样一个容器就是给我们提供了这一解决问题的方法。
  • 概念诞生

    IOC的概念就是这样诞生的。具体来说就是这种解决问题的思想的体现,它指导我们如何设计出松耦合、更优良的程序,提高整个体系结构的灵活度。

站在IOC的角度就是,所有的对象都是被动的,你们都不要动,让我来找你们。IOC帮助对象找到相应的依赖对象并注入,而不是由对象主动去找。在上面的Student和Person的例子中就是,当我Student对象需要用到Person的时候,不是Student直接调用Person,而是等着IOC容器给我。(具体怎么给,后面再讲,本节只讲概念)

2. DI (dependency injection)依赖注入

这个概念跟上面的概念产生原理和思想基本一致。它的定义就是针对上面注入的过程。其关键就在一句话“谁依赖谁,为什么需要依赖,谁注入了谁,注入了什么

  • 谁依赖谁 
    IOC容器就像一个盘子,所有的对象都是盘子里的豆子(这个豆子会很多,,比如:对象、资源、常量数据),因此当然是所有程序依赖IOC容器。
  • 为什么需要依赖
    理解了程序和IOC容器的关系,我们就会明白,要组成一个庞大的应用程序就像摊一张豆饼,摊一张豆饼肯定需要很多豆子一起才能行,单个的豆子一定需要其他的豆子一起参与才能成为一个豆饼。
  • 谁注入了谁
 因为对象(豆子)在这个过程中是被动的,因此就是IOC容器应用程序的某个对象(豆子)注入其依赖的资源(这里的资源也是众多豆子之一)
  • 注入了什么

注入的内容就是对象需要的内容。


3. 两个概念的比较

两个概念是不同角度对同一事物的描述。控制反转是一种思想描述,依赖注入是一种现象描述。

猜你喜欢

转载自blog.csdn.net/sinat_36220051/article/details/80249794
今日推荐