BeanFactory和ApplicationContext的区别
来源:互联网 发布:淘宝网店开店 押金 编辑:程序博客网 时间:2024/05/21 09:13
BeanFactory和ApplicationContext的区别
1.BeanFactory和ApplicationContext的异同点:
相同点:
两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比,提供了更多的扩展功能。
不同点:
BeanFactory是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext
2.在实际开发中用BeanFactory还是ApplicationContext
ApplicationContext包含BeanFactory的所有功能。通常建议比BeanFactory优先,除非有一些限制的场合如字节长度对内存有很大的影响时(Applet)。然后,绝大多数"典型的"企业应用和系统,ApplicationContext就是你需要使用的。Spring2.0及以上版本,大量使用了link linkend="beans-factory-extension-bpp">BeanPostProcessor扩展(以便应用代理等功能),如果你选择BeanFactory则无法使用相当多的支持功能,如事务和AOP,这可能会导致混乱,因为配置并没有错误。
3.一个简单的例子来证明BeanFactory和ApplicationContext主要区别
搭建工程的环境就不说了,直接上代码。
1.首先创建一个实体类:User
public class User { public User(){ System.out.println("实例化User"); }}
2.在创建一个ApplicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="user" class="cn.test.User"></bean></beans>
3.创建测试类
public class TestHappy { /** * BeanFactory的测试 */@Testpublic void beanFactoryTest(){BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));} /** * ApplicationContext的测试 */@Testpublic void applicationContextTest(){ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");} }
BeanFactory测试结果:
ApplicationContext测试结果:
总结:
BeanFactory当需要调用时读取配置信息,生成某个类的实例。如果读入的Bean配置正确,则其他的配置中有错误也不会影响程序的运行。而ApplicationContext 在初始化时就把 xml 的配置信息读入内存,对 XML 文件进行检验,如果配置文件没有错误,就创建所有的Bean ,直接为应用程序服务。相对于基本的BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置Bean较多时,程序启动较慢。
- BeanFactory 和 ApplicationContext的区别
- BeanFactory 和 ApplicationContext的区别
- BeanFactory 和 ApplicationContext的区别
- BeanFactory 和 ApplicationContext的区别
- BeanFactory 和 ApplicationContext的区别
- ApplicationContext和BeanFactory的区别
- BeanFactory 和 ApplicationContext的区别
- BeanFactory 和 ApplicationContext的区别
- BeanFactory和ApplicationContext的区别
- BeanFactory和ApplicationContext的区别
- BeanFactory和ApplicationContext的区别
- BeanFactory和ApplicationContext区别
- BeanFactory 和ApplicationContext区别
- BeanFactory和ApplicationContext 区别
- spring的BeanFactory和ApplicationContext的区别
- 1. ApplicationContext和BeanFactory的区别
- spring的applicationContext和beanFactory区别
- spring 中beanFactory和ApplicationContext的区别
- win7 Python3.5 显示cifar10图片
- 路由器设置,一般输入192.168.1.1,这个怎么理解?
- 一分钟理解自动化单元测试
- 基本动画
- 基于Photos.framework自定制相册swift
- BeanFactory和ApplicationContext的区别
- 嵌入式工程师必须要懂的知识之-------存储器
- java多线程3(线程间的通信)
- AR眼镜初创公司亮亮视野获千万美元B轮融资,将继续AR行业的推动。
- 信号量与互斥量的区别
- 数据表驱动
- Kotlin 基础语法学习
- Spring AOP
- POJ 1218 THE DRUNK JAILER 笔记