zoukankan      html  css  js  c++  java
  • spring的依赖注入如何降低了耦合

    依赖注入:程序运行过程中,如需另一个对象协作(调用它的方法、访问他的属性时),无须在代码中创建被调用者,而是依赖于外部容器的注入

    看过一些比较好的回答

    1.一个人(Java实例,调用者)需要一把斧子(Java实例,被调用者)

    在原始社会里,几乎没有社会分工;需要斧子的人(调用者)只能自己去磨一把斧子(被调用者);对应情形为:Java程序里的调用者自己创建被调用者,通常采用new关键字调用构造器创建一个被调用者

    进入工业社会,工厂出现了,斧子不再由普通人完成,而在工厂里被生产出来,此时需要斧子的人(调用者)找到工厂,购买斧子,无须关心斧子的制造过程;对应简单工厂设计模式,调用者只需定位工厂,无须管理被调用者的具体实现

    进入“共产主义”社会,需要斧子的人甚至无须定位工厂,“坐等”社会提供即可;调用者无须关心被调用者的实现,无须理会工厂,等待Spring依赖注入

    总之依赖注入的意思是你需要的东西不是由你创建的,而是第三方,或者说容器提供给你的。这样的设计符合正交性,即所谓的松耦合。

    2.依赖注入是调用者仅通过声明某个组件就可以获得组件的控制权,而对该组件的依赖关系管理、查找、加载由外部完成。

    3.依赖注入就是你不用关心对象的生命周期,什么时候被创建,什么时候销毁,只需直接使用即可,对象的生命周期由提供依赖注入的框架来管理。

    一个简单的例子如下:

    public class example1 implement example1Impl{

    private example2 exam2;

    public example1(){

    exam2=new exam2();

    }

    public void xxx(){

    exam2.xxx();

    }

    }

    采用注入的方式(构造器注入):

    public class example1 implement example1Impl{

    private example2 exam2;

    public example1(exam2){

    this.exam2=exam2;

    }

    public void xxx(){

    exam2.xxx();

    }

    }

    如何理解第二个比第一个降低了example1和example2类之间的耦合度呢?

    Spring可以通过注解和xml配置文件来体现依赖注入,example1不需要自行创建example2的对象,容器通过配置文件设置bean的property属性,这样代码中的依赖关系转移到了配置文件中了。

  • 相关阅读:
    第二章:WebDriver 打开Firefox浏览器 和 Chrome 浏览器
    第一章:在 java 中配置 selenium jar 包的步骤
    第一章:Chrome 43 配置 java + selenium 环境
    第一章:火狐浏览器 : 环境配置: FireFox 版本38 + jdk 7 + selenium 2.53.6 + selenum-version 2.48.2
    抛弃CSDN博客 转移到 博客园来编写博客
    第一章:eclipse 中修改字体大小和编码格式
    2. VirtualBox 虚拟机:安装
    1. 在虚拟机中 添加内容
    第一章:selenium + java 环境安装 —— eclipse 中的使用
    实验二 Java面向对象程序设计
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/6885287.html
Copyright © 2011-2022 走看看