zoukankan      html  css  js  c++  java
  • 依赖查找与依赖注入

    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 一般
  • 相关阅读:
    使用 Spring + CXF 发布 REST 服务
    在web项目中使用CXF暴露REST服务
    学习SpringMVC——从HelloWorld开始
    java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    安装maven时JAVA_HOME的配置小问题
    java 接口的实现和继承关系
    servlet的两种配置方式
    C# MainWindowHandle为0的解决方法
    C# WindowsMediaPlayer 的一些用法
    C# 获取MP3信息
  • 原文地址:https://www.cnblogs.com/ason-wxs/p/13442904.html
Copyright © 2011-2022 走看看