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
分享到:
相关推荐
Spring Ioc 注解 依赖注入
SpringIOC_泛型依赖注入,泛型依赖注入,注入一个组件的时候,他的泛型也是参考标准
IoC 依赖注入 技术总结 IoC 依赖注入 技术总结
springIOC 小例子 附带源码 适合新手学习
编程语言+JAVAspring+IoC容器+依赖注入**:这是一个关于JAVAspring编程语言的IoC容器的依赖注入的资源,适合有一定JAVAspring基础的开发者。它介绍了JAVAspring的IoC容器的概念、原理和作用,以及如何使用JAVAspring...
我相信很多朋友学习IOC概念的时候,查找了很多资料结果还是一头雾水,感觉高深难懂或者一知半解,而我这篇博客就是以通俗易懂的话语,用故事的方式,讲解IOC(控制反转)和DI(依赖注入)的概念,让大家不再晕,不再觉得...
控制反转 依赖注入的c#实现,很好的教程。
IOCPerformanceTest C# IOC 依赖注入源码 好东西 懂得人都知道
【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120404805 博客源码快照
【IOC 控制反转】Android 布局依赖注入 ( 布局依赖注入步骤 | 布局依赖注入代码示例 ) https://hanshuliang.blog.csdn.net/article/details/120402953 博客源码快照
1. 软件系统在没有引IOC容器之前,如图1所示,对象A依赖于对象B,那么对象A在初始化或者 2. 软件系统在引IOC容器之后,这种情形就完全改变了,如图2所示
spring IOC容器依赖注入XML配置详解 运行环境:eclipse 构建工具:maven 不提供maven构建,maven用来解决jar包的依赖
主要介绍了浅谈Spring IoC容器的依赖注入原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法 。在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖完全硬编码在程序中,对象的创建有程序自己控制;...
该项目实现了简单的IOC技术思想和DI依赖注入
实现依赖注入:1、构造函数注入。2、属性注入。3、接口注入。4、IOC容器注入。5、Unity注入,根据配置文件
本文主要介绍了PHP控制反转(IOC)和依赖注入(DI)的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
“IOC容器与DI依赖注入示例”文章提及
最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式,为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中,但是在服务调用的时候总是获取到最后注入的那个方法的实现,这...