Spring核心(二)IoC介绍

  IoC控制反转模式(也称作依赖性注入DI)是Spring的核心,他的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。Spring中的IoC容器负责将这些联系在一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在一起,由容器来决定什么时间调用方法。  

        控制反转(loc):控制权的转移。

        通过例子来理解一下:

        假如我要回家,Dao层可以选择多种方法

[java]  view plain copy
  1. Public  class  ByBus{  
  2.     Public  void gohome(){  
  3.       System.out.println(“坐公交车”);  
  4.     }  
  5. }  

[java]  view plain copy
  1. Public   class  Cycle{  
  2.     Public  void  gohome(){  
  3.        System.out.println(“骑自行车”);  
  4.     }  
  5. }  



业务层,如果选择坐车,那么:

[java]  view plain copy
  1. Public  class  GoWhere{  
  2.    Public   void  Gohome(){  
  3.       ByBus  byBus=new  ByBus();  
  4.       byBus.gohome();  
  5.    }  
  6. }  


       在GoWhere类的设计中,回家的需求依赖于实际的ByBus对象,如果要将方法改为骑自行车则必须要修改Go这个类。

DI----依赖倒转原则是:程序不应该依赖于实现,而是要依赖于抽象接口。

       所以如果我们在设计系统的过程中,对业务进行抽象,抽出一个接口:

[java]  view plain copy
  1. Public  interface  Ivehicle{  
  2.    Public  void  gohome();  
  3. }  


        然后ByBus和Cycle类都实现Ivehicle接口,在此就省略不贴代码了。

        下面是重新设计GoWhere类,回家的方法可设计为依赖Ivehicle接口,而不依赖于实际的ByBus和Cycle。

[java]  view plain copy
  1. Public  class  GoWhere{  
  2.     Private  Ivehicle  vehicle;  
  3.     Public  void  setVehicle(Ivehicle  vehicle){  
  4.         This.vehicle=vehicle;  
  5.     }  
  6.     Public   void  Gohome(){  
  7.         Vehicle.gohome();  
  8.     }  
  9. }  


        按照这样的设计方式,GoWhere类是可以重用的。这样,在表示层,如果选择坐车回家,则可以写为:

[java]  view plain copy
  1. GoWhere  goWhere=new  goWhere();  
  2. goWhere.setVehicle(new  ByBus);  
  3. goWhere.Gohome();  

如果选择骑车回家,则写为:

[java]  view plain copy
  1. GoWhere  goWhere=new  goWhere();  
  2. goWhere.setVehicle(new  Cycle);  
  3. goWhere.Gohome();  


        由此可以看出,无论底层的存储如何变化,对于GoWhere类来说都不用修改。修改的只是客户端。

        我们可以编写一个配置文件,在配置文件中对所需的对象进行配置,这样的话,连客户端的代码都不用修改,就可以方便的更换方法。

        其实,Spring的核心容器IOC就是提供的这样对象的配置管理功能。

 

        Spring中IOC的基本概念是:基于OO设计原则的TheHollywood Principle:Don’t call us, we’ll call you(别找我,我会来找你的)。程序中各个组件之间的关系,不由程序代码直接操控,而由容器控制。控制权由应用代码中转到了外部容器,即所谓的反转。也就是说对象的控制权转交给spring容器。

        下篇文章介绍Spring中IOC的使用方法,看看上文中的例子用Spring管理后会有什么变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值