一、ApplicationContext的实现类
① ClassPathXMLApplicationContext:加载类路径下的配置文件,要求配置文件必须在类路径下。
② FileSystemXmlApplicationContext:在访问允许的前提下加载位于磁盘任意路径下的配置文件。
示例:ApplicationContext ac = new FileSystemXmlApplicationContext(“C:\Users\Administrator\Desktop\applicationContext.xml”);
③ AnnotationConfigApplicationContext:基于读取注解的方式创建容器。
二、BeanFactory与ApplicationContext的区别
* ApplicationContext在构建核心容器时的对象创建策略是配置文件读取完毕后立即创建指定的对象(立即加载)。
证明:在测试类的容器声明处添加断点,并在持久层实现类或业务层实现类中定义一个无参构造函数进行测试输出,随后程序以Debug模式启动,单步跳过创建容器的代码后发现控制台输出测试文字,据此说明核心容器构建对象的策略是读取完配置文件后立即创建配置文件中指定的对象。
* BeanFactory在容器创建完成后并不会马上创建配置文件中指定的对象,而是在对象真正需要使用时才根据bean标签的id属性值构建指定的对象(延迟加载)。
证明:程序以Debug模式启动后运行至示例代码的前三行时控制台仅输出测试文字,无任何对象信息输出,据此说明BeanFactory仅在对象真正需要使用时才进行创建。
结论:ApplicationContext适用于创建单例对象,而BeanFactory则更适用于创建多例对象,Spring的强大之处在于能够根据配置上的不同自动选择对象的创建策略。