浅谈控制反转和依赖注入

控制反转(Inversion of Control,IoC),是一个比较抽象的概念,它和依赖注入(Dependency Injection, DI)其实差不多,它们两个只是从不同的角度描述相同的概念。

java对象要调用另一个java对象(也称为依赖另一个对象),传统的模式下要用new 来创建被依赖的对象,然后才能使用,这使得java对象之间的耦合度很高,不利于后期代码的升级和维护。——从Spring框架出现后,所有java对象的创建都是由Spring容器完成,并且这些java对象之间都不存在直接的关系,它们都依赖于Spring容器。对象创建的控制权由调用者转移到Spring容器,即控制反转。Spring容器还负责将被依赖对象赋值(即注入)给调用者的成员变量,即依赖注入。

两种注入方式

1.构造方法注入

    private TestDIDao testDIDao;
    //利用构造方法注入依赖接口对象
    public TestDIServiceImp(TestDIDao testDIDao){
        this.testDIDao=testDIDao;
    }

在Spring配置文件中配置

    <bean id="myTestDIDao" class="dao.TestDIDaoImp"/>

    <!--Spring 创建Service实现类对象-->
    <bean id="myTestDIService" class="service.TestDIServiceImp">
        <!--使用构造方法 将myTestDIDao注入到TestDIServiceImp类的TestIDDao成员变量上-->
        <constructor-arg index="0" ref="myTestDIDao"/>
    </bean>

2.setter方法注入

    private TestDIDao testDIDao;
    //添加testDIDao属性的setter方法,用于实现注入
    public void setTestDIDao(TestDIDao testDIDao){
        this.testDIDao=testDIDao;
    }

在Spring配置文件中配置

    <!--Spring 创建Dao实现类对象-->
    <bean id="myTestDIDao" class="dao.TestDIDaoImp"/>

    <!--用Spring容器创建TestDIServiceImp对象-->
    <bean id="myTestDIService2" class="service.TestDIServiceImp2">
        <!--使用setter 将myTestDIDao注入到TestDIServiceImp2类的TestIDDao成员变量上-->
        <property name="testDIDao" ref="myTestDIDao"/>
    </bean>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值