当前位置:首页 > 开发 > 编程语言 > Spring > 正文

我的spring学习笔记2-IoC(反向控制 依赖注入)

发表于: 2012-04-10   作者:aijuans   来源:转载   浏览:
摘要: IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。 IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明: 如:程序中有 Mysql.calss 、Oracle.class 、SqlSe
IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。
IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明:
如:程序中有 Mysql.calss 、Oracle.class 、SqlServer.class三个类,但我们不知道用户会选哪个数据库,所以我们不能把调用数据库的方法固定。当我们发布给用户时,我们也不可能去修改原代码,而只需去修改一个配置文件如database=mysql/oracle/sqlserver就可以了。也可以这么说,向调用数据库的方法传入一个参数如mysql就调用Mysql.calss类。这就可以理解为反向控制和依赖注入。到这里也许我们会想当传入一个类对应的参数就可以调用该类,那么我们传入一个方法对应的参数可以调用相对应的方法吗?答案是当然可以的。
也许程序员不爱看文字描述,下面的就用代码来辅助:
1、  Implements(接口) 或 extends(继承类)
2、  继承接口或继承类的类
3、  用set方法和构造法注入类的IOC类
4、  调用IoC的实现类
Mysql.class 、Oracle.class、 SqlServer.class继承DatebaseImp.class
DataBaseIoC.class用构造和set方法注入Mysql.class 或Oracle.class或 SqlServer.class
Test.class调用DataBaseIoC.class的方法。

一、定义接口:DataBaseImp
public interface DataBaseImp {
    public void getDate();
}

二、定义调用接口的类Mysql、Oracle、Sqlserver
public class Mysql  implements DataBaseImp {
    public void getDate() {
       System.out.println("调用Mysql数据");
    }
}
 
public class Oracle implements DataBaseImp {
    public void getDate() {
       System.out.println("调用Oracle数据");
    }
}
 
public class SqlServer implements DataBaseImp {
    public void getDate() {
       System.out.println("调用SqlServer数据");
    }
}

三、定义注入类
public class DateBaseIoC {
    private DataBaseImp dataBase;
    public void getDate() {
       dataBase.getDate();
    }
    //用set方法注入类
    public void setDataBase(DataBaseImp dataBase) {
       this.dataBase = dataBase;
    }
}

四、定义实现类
public class Test {
    public static void main(String[] args) {
       DateBaseIoC baseIoC = new DateBaseIoC();
       baseIoC.setDataBase(new Mysql()); //调用set
       baseIoC.getDate();
    }

}最后输出:调用Mysql数据

这里主要要说明一下IoC类 DateBaseIoC.class ,上面用的是set方法注入的,下面是构造方法
public class DateBaseIoC{
    private DataBaseImp dataBase;
    //构造方法,在调用时构造
    public DateBaseIoC(DataBaseImp dataBase) {
       this.dataBase=dataBase;
    }
    public void getDate() {
       dataBase.getDate();
    }
}

从上面看出,我们只要修改Test.class实现类就可以调用不同的类,如果把new Mysql()这个Object参数从配置文件里查询调用,那么软件就可以配置了。这里就不多讲如何实现,同时如何调用方法就在这里不多说。

我的spring学习笔记2-IoC(反向控制 依赖注入)

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
索引 1.基本Bean配置 1.1Bean容器 1.2Bean工厂-BeanFactory 1.3应用上下文-ApplicationContext 1.4B
索引 1.基本Bean配置 1.1Bean容器 1.2Bean工厂-BeanFactory 1.3应用上下文-ApplicationContext 1.4B
Spring的核心机制是依赖注入。依赖注入让bean与bean之间以配置文件组织在一起,而不是以硬编码的方
相关概念 依赖:A组件调用B组件的方法,称A组件依赖B组件。 依赖注入(Dependency Injection,DI)
Spring最主要的思想是IoC(Inversion of Control,控制反转、反向控制),或者称为DI(Dependency Injec
spring是一个轻量级的容器框架,主要是为了使企业的开发变得简单、高效。无论是从大小还是开销来讲
一、前言: Spring.Net是Java开源框架迁移过来的,主要分为 1)依赖注入 2)面向方面编程 3)数据访问
简介 很早以前接触过spring,听说过关于这个框架最多的就是关于依赖注入和它带来的各种好处。那么sp
简介 在前面的文章里,我已经对依赖注入的基本概念做了一个介绍。我们已经知道了依赖注入的意义和目
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号