对象的生成由Spring通过读取配置文件(applicationContext.xml)动态设置,主调类仅仅面对接口编程,无需知道具体的实现类。这样我们就可以根据配置文件进行实现类的切换。从而降低耦合性。对象的生成,由框架通过反射机制完成,控制权从前端主程序转化到了框架, 这种思想叫做控制反转(IOC),Inverse Of Control,可以很好的实现模块切换。
例如:实现USB模拟程序
配置文件
<beans> <bean id="disk" class="usbdisk.UsbDisk"></bean> </beans>
程序
package app;
public interface IDISK {
public abstract String readInfo();
public abstract void writeInfo(String msg);
}
package usbdisk;
import app.IDISK;
public class UsbDisk implements IDISK{
public String readInfo(){
return "从U盘读过来的信息";
}
public void writeInfo(String msg){
System.out.println("向U盘写出信息:" + msg);
}
}
package movedisk;
import app.IDISK;
public class MoveDisk implements IDISK{
public String readInfo(){
return "从移动硬盘读过来的信息";
}
public void writeInfo(String msg){
System.out.println("向移动硬盘写出信息:" + msg);
}
}
import java.awt.Frame;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import app.IDISK;
public class Test {
public static void main(String[] args) {
ApplicationContext context = new FileSystemXmlApplicationContext("applicationContext.xml");
IDISK disk =( IDISK)context.getBean("disk ");
//根据配置文件的内容,实例化对象并且返回
disk.readInfo ();
}
}