spring IOC 理解

Spring IOC原理理解

今天花了一些时间去重新学习以前未好好掌握的内容,亡羊补牢,未为晚矣。
首先侧重看的便是spring IOC的原理,查询了很多资料后,在此写出自己的心得体会。

什么是IOC,IOC什么?

IOC(控制反转:Inverse of Control),现在也叫依赖注入,是Spring容器的内核,也可以说是spring能如此方便程序员编码的核心。
IOC即是利用了工厂模式将对象交给容器管理,通过容器的各种属性的相关操作来实现对对象的操作,所谓控制反转即是如此,控制:某个对象对另一个对象的控制权,反转:将该控制权交给容器来管理,容器决定谁控制谁。
举个简单的例子:A工人管理B工人,从代码角度看即定义了一个对象操作另一个对象,这两个对象都是事先定义好的,确定的,唯一的,但是我们知道在代码的角度,如果A有一天有事不能来上班了,那么我们定义的这个对象是不是便成了空指针了?但如果我们把控制权交给工厂来管理,工厂说A管理B那么A就是管理B,如果有天A不能来上班了,工厂可以立马指定C来管理B,对象不再是固定确定的,可以自由指定,这样是不是避免了空指针的错误呢。

IOC的类别

IOC有三种类别,1.构造方法注入,2.属性方法注入,3.接口方法注入。

1.构造方法注入

顾名思义,构造方法注入即是定义一个带参数的构造方法,由第三方传入构造方法的值,即上面所说的工厂指定一个值,例:

public class A{  
   private B    b; 
   //①注入管理对象
   public A(B b){   
       this.b = b;  
   }  
   public void manager(){
   System.out.println("我被"+b+"管理了");
   }
}  `
public class Factory {  
   public void factory(){  
        //①工厂指定管理者
      B b = new people();    
  
        //②注入具体管理者  
        A  a = new A(b);   
       a.manager();  
   }  
}

2.属性方法注入
属性方法注入就是我们常说的set方法,由第三方的set方法来定义具体的对象,这样避免了构造函数的全局使用弊端,使用set方法来替代构造函数注入,使我们能在想指定时指定,不必再每次都要向构造函数中传值才能使用对象。
例子:

public class A {  
    private B b;  
     //①属性注入方法  
    public void setB(B b) {    
        this.b= b;  
    }  
    public void manager() {  
        System.out.println("我被"+b+"管理了");
    }  
}  
public class Factory{  
   public void factory(){  
       B b= new people();  
       A a= new A();  
  
        //①调用属性Setter方法注入  
       a.setB(b);   
       a.manager();  
   }  
}  

3.接口注入方法
所谓接口注入方法即是用接口类代替set方法,大家可以自己改写代码,接口注入方法与set方法并无多大区别,反而多定义了个接口类,并不好使用。

总结

spring的核心便是依赖注入,spring提供xml文件部署及注解的方式来实现依赖注入(推荐注解方式,减少配置量),想要学好spring的系列框架,搞懂其依赖注入原理是很有必要的。
理解有限,有很多不到位的地方请大家多多指教,也请各位大牛为小白指点指点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值