DataAccess 用于数据访问,WEB 用于页面显示,核心容器也就是IOC部分。 控制反转(IOC) 控制反转(Inversion of Control)是指将对象的创建权反转(交给)Spring。 使用IOC就需要导入IOC相关的包,也就是上图中核心容器中的几个包:beans,context,core,expression四个包。 实现原理 传统方式创建对象: UserDAO userDAO=new UserDAO(); 进一步面向接口编程,可以多态: UserDAO userDAO=new UserDAOImpl(); 这种方式的缺点是接口和实现类高耦合,切换底层实现类时,需要修改源代码。程序设计应该满足OCP元祖,在尽量不修改程序源代码的基础上对程序进行扩展。此时,可以使用工厂模式: class BeanFactory{ public static UserDAO getUserDAO(){ return new UserDAOImpl(); } } 此种方式虽然在接口和实现类之间没有耦合,但是接口和工厂之间存在耦合。 使用工厂+反射+配置文件的方式,实现解耦,这也是 Spring 框架 IOC 的底层实现。 //xml配置文件 // class BeanFactory{ public static Object getBean(String id){ //解析XML //反射 Class clazz=Class.forName(); return clazz.newInstance(); } }