`

IoC 反向控制 依赖注入

 
阅读更多
IoC 反向控制 依赖注入

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参数从配置文件里查询调用,那么软件就可以配置了。这里就不多讲如何实现,同时如何调用方法就在这里不多说。

原文:http://ajava.org/article-8-1.html
分享到:
评论

相关推荐

    反向控制入门

    ### 反向控制入门:深度解析IoC与Dependency Injection #### 重要概念:IoC容器与Dependency Injection 在IT行业,尤其是Java开发领域,近年来兴起了一股轻量级容器的风潮,这些容器的主要功能是协助开发者将来自...

    理解php依靠注入和掌握反转_.docx

    依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)是软件设计模式中的重要概念,特别是在面向对象编程中,它们有助于提高代码的可测试性、可维护性和解耦性。在PHP中,这两个...

    android中的"控制反转"(上)Demo程序

    在Android开发中,“控制反转”(Inversion of Control,IoC)是一种设计模式,它将对象的创建和管理权从代码本身转移到一个外部容器,通常是框架或者依赖注入库。这种模式提高了代码的可测试性、可维护性和灵活性。...

    用接口控制类

    反向控制则改变了这种局面,它将对象的创建和管理交由一个外部容器(如IoC容器)来处理,让类不再负责实例化其依赖,而是通过接口声明依赖关系,由容器根据接口自动注入相应的实现。 接口控制类是反向控制的一个...

    spring原理与笔记

    反向控制(IoC),也称为依赖注入(DI),是一种设计模式,它改变了传统对象获取依赖的方式。在IoC中,对象不再自行创建或查找依赖,而是由外部容器(在Spring中是BeanFactory或ApplicationContext)负责管理和注入...

    spring_in_action_学习笔记

    - **反向控制**:IoC容器管理着Bean的生命周期,通过依赖注入来实现对象之间的松散耦合。 - **面向切面**:通过AOP技术将业务逻辑与系统服务分离,提高代码的可读性和可维护性。 - **容器与框架**:Spring框架提供了...

    ACE mysql可用版ACE框架+反向代码生成+mysql数据库脚本

    它提供了模型-视图-控制器(MVC)架构,支持AOP(面向切面编程)和Ioc(依赖注入),使得开发者能够更加专注于业务逻辑,而不是繁琐的底层实现。ACE框架通过组件化的设计思想,允许开发者自由组合各种功能模块,以...

    mvc EF框架 开发项目的绝佳选择

    6. **依赖注入(IOC)**:使用IoC容器(如Autofac、Unity或Ninject)自动注入DbContext实例,有助于实现松耦合和单元测试。 **在实际开发中的应用** 在基于EF6的MVC项目中,Repository模式和依赖注入可以提高代码...

    bugioc:bugioc是Java的控制库的反向版本

    BugIOC,全称为“布乔克”,是一个独特的项目,它是对传统Java控制反转(IoC,Inversion of Control)库的一个反向实现,旨在提供一种不同于Spring等主流框架的DI解决方案。 【描述】:“布乔克——Java的控制库的...

    Spring简介(ppt)

    反向控制,又称为依赖注入,是Spring的核心特性之一。它打破了传统编程模式中对象之间相互依赖的构建方式,转而由容器负责管理和组装对象,根据配置信息决定对象之间的依赖关系。这降低了对象间的耦合度,使代码更...

    Android应用框架原理与程序设计

    - 广义IoC不仅仅局限于反向控制,还包含了依赖注入(Dependency Injection,DI)等机制。 - 依赖注入使得框架能够自动管理组件之间的依赖关系,进一步降低了组件间的耦合度。 #### 2.4 框架的重要功能:提供预设...

    开发架构Spring

    3. **依赖注入(Dependency Injection,DI)**:这是IoC的一个具体实现,Spring通过DI管理对象间的依赖关系,使得代码更易于测试和维护。例如,代码片段4展示了如何通过构造函数注入Speaker对象,使得Greeting类不再...

    Spring经典笔记

    Spring的核心概念是**反向控制**(Inversion of Control, IoC)和**依赖注入**(Dependency Injection, DI)。IoC意味着应用程序的控制权由Spring框架负责,而不是由代码自身。DI则是实现IoC的一种方式,通过配置...

    ssm在线网络图书商城

    在SSM项目中,Spring负责管理各个组件(如DAO、Service等)的生命周期,通过IoC容器进行依赖注入,使得各组件之间解耦,提高代码的可测试性和可维护性。此外,Spring还提供了事务管理,确保数据操作的一致性。 2. *...

    基于ssm+jsp的校园驿站管理系统源码数据库.zip

    本系统“基于SSM+jsp的校园驿站管理系统”便是这样一个实例,它融合了Spring框架的依赖注入、SpringMVC的控制器处理和MyBatis的持久层操作,再结合JSP技术进行视图展示,构建了一个高效、可维护的校园物流管理平台。...

    spring_in_action.pdf

    在传统模式下,对象会主动寻找和管理自己的依赖对象,而在Spring框架中,对象是被动地接收其依赖对象,即所谓的“依赖注入”。这种机制使得对象之间实现了松耦合,提高了代码的可测试性和可维护性。 - **面向切面...

    Spring从入门到精通

    - **反向控制(IoC):** IoC是一种设计模式,用于实现解耦,使得一个对象不直接控制其依赖项的创建,而是通过第三方容器来创建并注入这些依赖。 - **依赖注入(DI):** DI是IoC的具体实现之一,允许对象在其创建...

    ssh框架搭建教程.pdf

    SSH框架是Java开发中常用的三大框架的组合,包括Spring、Struts和Hibernate,它们分别负责IoC(控制反转)/DI(依赖注入)、MVC(模型-视图-控制器)和持久层操作。本教程将指导你如何一步步搭建一个基于SSH的J2EE...

    spring教材--一看就会

    Spring框架的核心理念是依赖注入(DI,Dependency Injection,也被称为反向控制或IOC,Inversion of Control),它通过配置文件或注解来管理对象的生命周期和依赖关系,从而降低组件间的耦合度。 【Spring 框架的...

    计算机外文翻译 外文文献 英文文献 (2).pdf

    文章详细阐述了Spring框架的反向控制(IOC)和面向方面编程(AOP)的概念。依赖注入确保代码更加整洁,而方法拦截则用于处理事务管理和性能监控等跨切面关注点。配置与代码的分离使得配置可以在不改变代码的情况下...

Global site tag (gtag.js) - Google Analytics