我的spring学习笔记2-IoC(反向控制 依赖注入)
2012-11-19 13:51
429 查看
我的spring学习笔记2-IoC(反向控制 依赖注入)
博客分类:Spring 3 系列
springmvcspring3
教程spring 教程spring
入门
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
Java代码
public interface DataBaseImp {
public void getDate();
}
二、定义调用接口的类Mysql、Oracle、Sqlserver
Java代码
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数据");
}
}
三、定义注入类
Java代码
public class DateBaseIoC {
private DataBaseImp dataBase;
public void getDate() {
dataBase.getDate();
}
//用set方法注入类
public void setDataBase(DataBaseImp dataBase) {
this.dataBase = dataBase;
}
}
四、定义实现类
Java代码
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方法注入的,下面是构造方法
Java代码
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(反向控制 依赖注入)
- Spring学习笔记2--反向控制(IoC)的例子
- Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)
- spring学习笔记 -- day02 spring基础、IOC控制反转
- spring学习之IOC(控制翻转)和ID(依赖注入) -- 坚持每天写收获
- 学习笔记--DI(依赖注入) 、Ioc(控制反转)
- Spring学习笔记(一) 通过Spring控制反转(IOC:Inversion of Control)为对象设置属性
- Spring 4 学习笔记2:控制反转(IoC)和依赖注入(DI)
- Spring学习—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)
- 【JavaEE学习笔记】Spring_01_工厂模式,Spring小程序,IoC控制反转
- [原创]java WEB学习笔记101:Spring学习---Spring Bean配置:IOC容器中bean的声明周期,Bean 后置处理器
- Spring学习笔记--AOP和IOC、SSH整合
- Spring IoC(控制反转)和DI(依赖注入)的理解
- spring学习笔记:Spring IOC容器,Spring源码
- Spring源码阅读——简单模拟Spring的控制反转IOC和依赖注入(Bean的加载和获取)
- Spring学习笔记(8)——依赖注入
- Spring学习笔记之IOC
- Spring学习笔记3:深入学习IOC
- Spring学习笔记(二) IoC容器与Bean
- Spring学习笔记(5)-----------IoC再度学习