IOC容器的两个接口是BeanFactory和ApplicationContext.都可以加载xml配置文件:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BeanFactory ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
差别:
- BeanFactory是IOC容器最基本的接口,ApplicationContext是前者的子接口。
- BeanFactory一般是spring内部使用的,开发人员建议使用ApplicationContext。
- 创建对象的顺序: ApplicationContext是在你加载xml配置文件的时候就创建好了对象,但是BeanFactory只在你getBean()的时候才会创建对象。
共同点
因为是父子接口,所以ApplicationContext有两个实现类,BeanFactory自然也有。这两个实现类分别是
ClassPathXmlApplicationContext:类路径加载(src下开始)
FileSystemXmlApplicationContext:文件系统路径加载
ApplicationContext ac = new ClassPathXmlApplicationContext("com/zzm/context/beans.xml");//等同路径:"classpath:com/zzm/context/beans.xml"
ApplicationContext ac = new FileSystemXmlApplicationContext("com/zzm/context/beans.xml");//等同路径:"file:com/zzm/context/beans.xml"