对象的生成由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 (); } } |