IoC(Inversion of Controller)控制反转

目录

1、IoC示意

2、Ioc注入方式

2.1、构造方法注入

2.2、setter方法注入

2.3、接口注入

2.4、三种注入方式比较

2.5、总结

3、IoC service Provider

3.1、IoC Service Provider的职责

3.2、IoC Service Provider如何管理对象间的依赖关系

3.2.1、直接编码方式

3.2.2、配置文件方式

3.2.3、元数据方式


1、IoC示意

IoC Service Provider在这里就是通常的Ioc容器所充当的角色。

2、Ioc注入方式

被注入的对象通过哪些方式来通知Ioc Service Provider为其提供服务呢?

1、构造方法注入

2、setter方法注入

3、接口注入

2.1、构造方法注入

构造方法注入,就是被注入对象可以通过在其构造方法中声明依赖对象的参数列表,让外部(通常是IoC容器)知道它需要哪些依赖对象。

2.2、setter方法注入

当前对象只要为其依赖对象所对应的属性添加setter方法,就可以通过setter方法将相应的依赖对象设置到被注入对象中。

setter方法注入虽不像构造方法注入那样,让对象构造完成后即可使用,但相对来说更宽松一些,可以在对象构造完成后在注入。

2.3、接口注入

被注入对象如果想要Ioc Service Provider为其注入对象,就必须实现某个接口。这个接口提供一个方法,用来为其注入依赖对象。IoC Service Provider最终通过这些接口来了解应该为被注入对象注入什么依赖对象。

2.4、三种注入方式比较

  • 接口注入:从注入方式上来说,接口注入是现在不甚提倡的一种方式。因为它强制被注入对象实现不必要的接口,带有侵入性。
  • 构造方法注入:优点是,对象在构造完成后,即已进入就绪状态。可以马上使用。缺点是,当依赖对象比较多的时候,构造方法的参数列表会比较长。而通过反射构造对象的时候,对相同类型的参数的处理会比较困难。而且在Java中,构造方法无法被继承,无法设置默认值。对于非必须的依赖处理,可能需要引入多个构造方法,而参数数量的变动可能造成维护上的不便。
  • setter方法注入:setter方法可以被继承,允许设置默认值,而且有良好的IDE支持。缺点是对象无法在构造完成后马上进入就绪状态。

2.5、总结

IoC是一种可以帮助我们解耦各业务对象间依赖关系的对象绑定方式。

3、IoC service Provider

3.1、IoC Service Provider的职责

  • 业务对象的构建管理。在IoC场景中,业务对象无需关心所依赖的对象如何构架如何取得,但这部分工作始终需要有人来做。所以IoC Service Provider 需要将对象的构建逻辑从客户端对象那里剥离出来。以免这部分逻辑污染业务对象的实现。
  • 业务对象间的依赖绑定。IoC Service Provider 通过结合之前构建和管理的所有业务对象,以及各个业务对象间可以识别的依赖管理,将这些对象所依赖的对象注入绑定,从而保证每个业务对象在视同的时候,可以处于就绪状态。

3.2、IoC Service Provider如何管理对象间的依赖关系

3.2.1、直接编码方式

在容器启动之前,我们可以通过程序编码方式将被注入对象和依赖对象注册到容器中,并明确它们相互之间的依赖注入关系。

3.2.2、配置文件方式

最为常见的,通过XML文件来管理和保存依赖注入信息。

3.2.3、元数据方式

下图,演示了使用Guice的相应注解标注后的FXNewsProvider定义。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值