目录
2、ApplicationContext 和 BeanFactory 区别
1、介绍 BeanFactory
如今中我们会使用 ApplicationContext 来获取 spring的上下文对象,除了该接口之外,我们还可以使用 BeanFactory 来获取 spring 的上下文
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("XXXXX.xml"));
这个接口在jdk1.5之前就有了,出现还是比较早,如果拿它读取 xml 文件还可以,但是如果拿它读取 @Bean 注解之类的就会报错。
如今已经不推荐使用了,如果使用的话还是推荐使用它的子类 ApplicationContext 。
平时写代码中我们虽然不常用该类,但是面试时还是会提到 ApplicationContext 和 BeanFactory 的区别,所以我们还是要了解一下。
2、ApplicationContext 和 BeanFactory 区别
区别如下🤲
相同点:
- 都可以得到 Spring 上下文对象
- 都是来自 Spring 的顶级接口。
不同点:
- 继承关系和功能:ApplicationContext 属于 BeanFactory 的子类;只有 BeanFactory 只有最基础访问 Bean 的能力,而 ApplicationContext 除了拥有 BeanFactory 功能之外,还包括了更多的功能,如:国际化支持、资源访问能力、事件传播能力等。
- 性能:ApplicationContext 加载方式是将 Bean 对象一次性加载,所以在后面访问 Bean 对象时会很快: BeanFactory 需要某个 Bean 时,采取加载 Bean 对象,所以它在执行 Bean 获取时,比较慢。