Spring中BeanFactory和ApplicationContext的区别
来源:互联网 发布:淘宝新店铺推广 编辑:程序博客网 时间:2024/05/21 06:49
1. 两者的大概背景
BeanFactory:
BeanFactory是spring中比较原始,比较古老的Factory。因为比较古老,所以BeanFactory无法支持spring插件,例如:AOP、Web应用等功能。
ApplicationContext
ApplicationContext是BeanFactory的子类,因为古老的BeanFactory无法满足不断更新的spring的需求,于是ApplicationContext就基本上代替了BeanFactory的工作,以一种更面向框架的工作方式以及对上下文进行分层和实现继承,并在这个基础上对功能进行扩展:
<1>MessageSource, 提供国际化的消息访问
<2>资源访问(如URL和文件)
<3>事件传递
<4>Bean的自动装配
<5>各种不同应用层的Context实现
2. 利用BeanFactory获取bean
//XmlBeanFactory是典型的BeanFactory。 BeanFactory factory = new XmlBeanFactory("XXX.xml"); //获取一个叫做mdzz的bean。在这个时候进行实例化。 factory.getBean("mdzz");
重点:当我们使用BeanFactory去获取Bean的时候,我们只是实例化了该容器,而该容器中的bean并没有被实例化。当我们getBean的时候,才会实时实例化该bean对象。
3. 利用ApplicationContext获取bean
//当我们实例化XXX.xml的时候,该文件中配置的bean都会被实例化。(该bean scope是singleton)ApplicationContext appContext = new ClassPathXmlApplicationContext("XXX.xml");
重点:当我们使用ApplicationContext去获取bean的时候,在加载XXX.xml的时候,会创建所有的配置bean。
4. 三种获取ApplicationContext对象引用的方法
/第一种加载方法,加载的是classpath下的配置文件。ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");//第二种加载方法,加载的是磁盘路径下的文件。ApplicationContext applicationContext = new FileSystemXmlApplicationContext("applicationContext.xml");//第三种加载方法,XmlWebApplicationContext,从web系统中加载。//得到配置文件后,就能拿到想要的对象。例如:HelloService helloService = (HelloService) applicationContext.getBean("userService");//在这当中getBean中的参数为你在配置文件下,这个对象的id,一个标识。
5. 区别总结
<1>如果使用ApplicationContext,如果配置的bean是singleton,那么不管你有没有或想不想用它,它都会被实例化。好处是可以预先加载,坏处是浪费内存。
<2>BeanFactory,当使用BeanFactory实例化对象时,配置的bean不会马上被实例化,而是等到你使用该bean的时候(getBean)才会被实例化。好处是节约内存,坏处是速度比较慢。多用于移动设备的开发。
<3>没有特殊要求的情况下,应该使用ApplicationContext完成。因为BeanFactory能完成的事情,ApplicationContext都能完成,并且提供了更多接近现在开发的功能。
- spring 中beanFactory和ApplicationContext的区别
- spring 中beanFactory和ApplicationContext的区别
- Spring中BeanFactory和ApplicationContext的区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别 .
- Spring中ApplicationContext和beanfactory区别
- 【转】Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- Spring中ApplicationContext和beanfactory区别
- notepad++ 插件 总结
- notepad++ 主题 背景色 字体
- notepad++ 使用
- VS2012使用
- SSM整合
- Spring中BeanFactory和ApplicationContext的区别
- 互斥锁死锁状态详解
- 剑指offer-归并排序
- Web中动画的实现方式
- 子龙山人Learn Emacs in 21 Days: day 7 学习笔记
- Android_Handler源码分析
- 模拟MapReduce编程的程序案例(用于统计文本中单词出现频率)
- mybatis怎么接收返回的"select count(1)"sql数目
- 大数相加-Java版