Spring 对象属性注入

一、首先说什么是依赖。
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
public class Person{   
    public void screw(Screwdriver screwdriver){   
       screwdriver.screw();   
    }   

  public static main(String args[]){
    Person person = new Person():
    Screwdriver  screwdirver= new Screwdriver();//螺丝刀
    /** 拧螺丝 */  
   person.srew(screwdirver);
  }

比如说你要去拧螺丝,你是不是要借助(调用)(也就是依赖)螺丝刀(Screwdriver对象)来帮助你完成拧螺丝(screw)的工作。person--依赖-->screwdirver。
二、其次说说什控制的是什么,谁来控制的。
   这控制就体现在Screwdriver  screwdirver= new Screwdriver();
     控制:Screwdriver对象的实例化(也就是new)的位置和时间。
   谁来控制的?显示是程序员手工调用new来去实例化对象的。
三、最后,说说什么是依赖注入和控制反转。
public class Person{   
/*没有new,spring会在运行时根据你在xml文件的配置对Screwdriver 搜索进行实例化。*/
   Screwdriver  screwdirver;
    public void screw(Screwdriver screwdriver){   
       screwdriver.screw();  
public main(){
Screwdriver  screwdirver = SpringUtil.getBean(“screwdirver”);
person.srew(screwdirver);
}
    }   

上面代码中没有使用new,也就是说我们没用控制Screwdriver的实例化,

这个是spring自己完成的,也就是我们把new这个对象的控制权交给了spring,这就是控制反转(叫控制移交不也挺好的嘛)。那么调用关系(也就是依赖关系)是由spring的getBean去实现的,也就是spring把这个依赖关系加入到程序中的,这个就是依赖注入。
小结:我个人感觉语言表达力不足,最后还是引用一下别人(caojunwei1987)的总结吧:
很简单 ,就是本来你该做的事情  你不去做了 让系统去做,比如,你获取一个对象的时候,往往需要new出实例来,如果用了控制反转,那这件事情 就不需要你做了,你只需要在配置文件xml中配置好,系统就帮你new了。控制反转也叫依赖注入,就是把该用到的东西 提前注入进去,下次直接用 而不是每次都new。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值