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代码  收藏代码
  1. public interface DataBaseImp {  
  2.     public void getDate();  
  3. }  

二、定义调用接口的类Mysql、Oracle、Sqlserver 
Java代码  收藏代码
  1. public class Mysql  implements DataBaseImp {  
  2.     public void getDate() {  
  3.        System.out.println("调用Mysql数据");  
  4.     }  
  5. }  
  6.    
  7. public class Oracle implements DataBaseImp {  
  8.     public void getDate() {  
  9.        System.out.println("调用Oracle数据");  
  10.     }  
  11. }  
  12.    
  13. public class SqlServer implements DataBaseImp {  
  14.     public void getDate() {  
  15.        System.out.println("调用SqlServer数据");  
  16.     }  
  17. }  

三、定义注入类 
Java代码  收藏代码
  1. public class DateBaseIoC {  
  2.     private DataBaseImp dataBase;  
  3.     public void getDate() {  
  4.        dataBase.getDate();  
  5.     }  
  6.     //用set方法注入类  
  7.     public void setDataBase(DataBaseImp dataBase) {  
  8.        this.dataBase = dataBase;  
  9.     }  
  10. }  

四、定义实现类 
Java代码  收藏代码
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.        DateBaseIoC baseIoC = new DateBaseIoC();  
  4.        baseIoC.setDataBase(new Mysql()); //调用set  
  5.        baseIoC.getDate();  
  6.     }  

}最后输出:调用Mysql数据 

这里主要要说明一下IoC类 DateBaseIoC.class ,上面用的是set方法注入的,下面是构造方法 
Java代码  收藏代码
  1. public class DateBaseIoC{  
  2.     private DataBaseImp dataBase;  
  3.     //构造方法,在调用时构造  
  4.     public DateBaseIoC(DataBaseImp dataBase) {  
  5.        this.dataBase=dataBase;  
  6.     }  
  7.     public void getDate() {  
  8.        dataBase.getDate();  
  9.     }  
  10. }