读书笔记--spring解密---IoC


啥是IoC呢? 英文是 inversion of control,翻译成中文就是控制反转,这本书中也叫依赖注入(有人认为依赖注入应该属于Ioc的一种实现方式)

用大白话说,就是,自己的事,让别人来干。

举个例子,譬如一个类中需要用到另一个类,通常我们会在这个类中new一个所依赖的类。 但是使用Ioc后,我们只需要通过某种方式告诉Ioc Container,我么需要什么, Ioc Container会去new那个被依赖的类,并把它注入到我们的类里面来,这样在我们的类中就直接使用那个被依赖类,而不用亲自去new它了。

 


那怎么才能让别人知道我们的类需要什么呢? 也可以说怎么才能实现上面说的那种自动注入呢

有3种方式:构造方法注入、setter方法注入、接口注入

这3种方法包含什么意思,有啥区别呢?

定义:(这里只是解释定义,实现细节后面再说)

  1. 构造方法注入,就是它的字面意思。构造方法的参数类型是我们所依赖的对象的类型。
  2. setter方法注入,也是它的字面意思。 setter方法为某个属性赋值
  3. 接口注入,就比较繁琐了,被注入类需要实现某个接口中的方法,接口和方法名字不重要,重要的是方法参数类型必须是我们所依赖的那个类型。

比较:

  1. 接口注入,现在用的最少,因为他必须要求被注入类实现每个接口,带有入侵性。
  2. 构造函数注入,优点是构造完成后,我们立即可以使用。 缺点是,如果依赖比较多,会导致构造函数的参数列表很长,另外,如果某些依赖不是必选的,那么就需要实现多个构造函数,满足不同的需要,造成维护的麻烦。
  3. setter注入,描述性比较好,缺点就是构造后不能马上使用。

 

小结:

IoC是一种绑定方式,这种绑定方式是用来解耦各业务对象间的依赖关系。

 

IoC的好处: 解耦,利用扩展,利于重用,提高可测性(可以写一写mock对象作为依赖对象,尽早开始测试)

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值