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_#
    谢谢!
  • 相关阅读:
    js语法
    页面格式与布局
    css样式标签
    框架
    css样式表选择器
    最大值(东方化改题+老师给的题解)
    数字(东方化改题+老师给的正解)
    测试一下这个编辑器
    请让本题永远沉睡于此(东方化改题+给的标程)
    贪吃的yjj(东方化改题+给的标程)
  • 原文地址:https://www.cnblogs.com/lynujyq/p/5564846.html
Copyright © 2011-2022 走看看