zoukankan      html  css  js  c++  java
  • Spring的依赖注入怎么理解

    先看一段代码
    假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。
    人有时候需要用手机打电话,需要用到手机的dialUp方法。
    传统的写法是这样:

    Java code

    public class Person{
    public boolean makeCall(long number){
    Mobile mobile=new Mobile();
    return mobile.dialUp(number);
    }
    }

    也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new Mobile()才可以进行之后的工作。
    依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。
    接口:

    Java code

    public Interface MobileInterface{
    public boolean dialUp(long number);
    }

    Person类:

    Java code

    public class Person{
    private MobileInterface mobileInterface;
    public boolean makeCall(long number){
    return this.mobileInterface.dialUp(number);
    }
    public void setMobileInterface(MobileInterface mobileInterface){
    this.mobileInterface=mobileInterface;
    }
    }
    xml文件中配置依赖关系

    Java code
    <bean id="person" class="Person">
    <property name="mobileInterface">
    <ref local="mobileInterface"/>
    </property>
    </bean>
    <bean id="mobileInterface" class="Mobile"/>
    这样,Person类在实现拨打电话的时候,并不知道Mobile类的存在,它只知道调用一个接口MobileInterface,而MobileInterface的具体实现是通过Mobile类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。
    文章摘自http://zhidao.baidu.com/link?url=xL9mnzCggWSwYEddI0s55oGxOOjr48pt4NAmpxSsFNqI935n-kp1Gjo1jIiKvoRGhBqdCjLx9QcVqaxyy54Zo_#
    谢谢!
  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/lynujyq/p/5564846.html
Copyright © 2011-2022 走看看