My Blog

依赖查找与依赖注入

1.依赖查找

依赖查找是控制反转设计原则的一种实现方式。大体思路是:容器中的受控对象通过容器的API来查找自己所依赖的资源和协作对象。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的API,造成了我们无法在容器外使用和测试对象。依赖查找是一种更加传统的IOC实现方式。

两种查找方式:

  • 依赖拖拽(DP):注入的对象如何与组件发生联系,这个过程就是通过依赖拖拽实现;
  • 上下文化依赖查找(CDL):在某些方面跟依赖拖拽类似,但是上下文依赖查找中,查找的过程是在容器管理的资源中进行的,而不是从集中注册表中,并且通常是作用在某些设置点上;

2.依赖注入

依赖注入是自身对象中的内置对象是通过注入的方式进行创建,无需依赖特定的容器和API。容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造子传递给需要的对象。

四种注入方式:

  • 构造函数方法注入
  • Setter方法注入
  • 接口注入
  • 基于注解的依赖注入

注:Spring主要提供了@Autowired@Resource注解模式:
1.@Autowired注解,可以对Bean类成员变量、方法及构造函数进行标注,完成依赖注入的自动装配工作。使用@Autowired可以省略Bean类的待依赖注入对象的set方法,默认情况下按照依赖注入对象的类型自动进行匹配。
2.@Resource注解的功能和@Autowired注解功能相近,它有nametype两个主要的属性。Spring容器对于@Resource注解的name属性解析为bean的名字,type属性则解析为bean的类型。

3.优劣对比

类型 依赖处理 实现便利性 代码侵入性 API依赖性 可读性
依赖查找 主动获取 相对繁琐 侵入业务逻辑 依赖容器API 良好
依赖注入 被动提供 相对便利 低侵入性 不依赖容器API 一般
posted @ 2020-08-05 21:35  王心森  阅读(1313)  评论(0编辑  收藏  举报