spring入门——applicationContext与BeanFactory的区别
我们知道从applicationContext容器对象中如何获取Bean了,其实spring框架还有另外一种获取bean的方法:BeanFactory代码如下:
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/hsp/ioc/beans.xml"));
类1 对象1 =(类1)factory.getBean("类1");
那么,两者之间有啥区别呢?
applicationContext
当我们使用applicationContext来获取对象的时候,只要我们实例化容器,那么所有的对象都会被实例化(前提是将bean配置成单例模式,如果不是单例模式,也不会预加载,因为容器无法确定服务器究竟需要多少个对象)。

BeanFactory
而当我们使用BeanFactory去获取bean的时候呢,首先实例化该容器,容器中的对象是否立即实例化,根据配置文件的配置来进行配置。如果容器的bean配置的是不被立即实例化,那只有执行getBean 的代码去获取某个bean的时候,容器才会将对象实例化。
对比
使用applicationContext的好处就是:所有的对象都可以预加载,缺点就是消耗服务器的内存;而我们使用BeanFactory的话,好处是节约内存,缺点则是速度会相对来说慢一些。而且有可能会出现空指针异常的错误。而且通过bean工厂创建的bean生命周期会简单一些。
spring入门——applicationContext与BeanFactory的区别的更多相关文章
- Spring 中 ApplicationContext 和 BeanFactory 的区别,以及 Spring bean 作用域
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...
- Spring 中 ApplicationContext 和 BeanFactory 的区别
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...
- Spring中ApplicationContext和beanfactory区别---解析二
一.BeanFactory 和ApplicationContext Bean 工厂(com.springframework.beans.factory.BeanFactory)是Spring 框架最核 ...
- Spring中ApplicationContext和beanfactory区别---解析一
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- Spring中ApplicationContext和beanfactory区别
BeanFacotry是spring中比较原始的Factory.如XMLBeanFactory就是一种典型的BeanFactory.原始的BeanFactory无法支持spring的许多插件,如AOP ...
- Spring中FactoryBean与BeanFactory的区别
版本:spring-framework-4.1 一概述 BeanFactory 与 FactoryBean的区别, 两个名字很像,面试中也经常遇到,所以容易搞混,现从源码以及示例两方面来分析. 二.源 ...
- spring中的BeanFactory与ApplicationContext的作用和区别?
BeanFactory类关系继承图 1. BeanFactory类结构体系: BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂, ...
- 创建ApplicationContext与BeanFactory时的区别-Spring源码学习之容器的基本实现
传送门 可以加载XML两种方法 使用 BeanFactory 加载 XML BeanFactory bf = new XmlBeanFactory(new ClassPathResource(&quo ...
- 【Spring】3、BeanFactory 和 ApplicationContext的区别
转自:http://blog.csdn.net/intlgj/article/details/5660587 在spring中,两个最基本最重要的包是 org.springframework.bean ...
随机推荐
- 【C++】boost::shared_ptr boost::make_shared
一.shared_ptr shared_ptr作为一个动态分配的对象,当最后一个指向其内容的指针销毁(destroyed)或重置(reset),其指向的内容会被销毁(deleted).不再需要显式调用 ...
- 6、 (★、※)root that results in a highest tree
问题:对于一棵特定的树,选择合适的根结点,使得树的高度最大. 思路: 先选择一个结点,从该结点开始遍历整棵树,获取能达到的最深的顶点(记为结点集合A): 然后从集合A中任意一个结点出发遍历整棵树,获取 ...
- 采用ddt 可以把ddt获取的数据 塞进测试用例里面的备注里面去展示 (还没有试)
- sqlserver 带输出参数的存储过程的创建与执行
创建 use StudentManager go if exists(select * from sysobjects where name='usp_ScoreQuery4') drop proce ...
- base64 压缩上传上传图片
@{ ViewBag.Title = "dddddddd"; Layout = "~/Areas/Wap/Views/Shared/_Head.cshtml"; ...
- CSS笔试题
如何实现移动端9宫格 如何实现移动端下列8宫格 实现移动端图片画廊CSS样式 写一个简单的animation的css动画 美化select,radio,range样式,只需考虑谷歌浏览器,下面给出的是 ...
- Redis管理:安全/耗时命令日志与命令监控/数据库管理工具
1.安全管理 1)绑定指定IP Redis的安全设计是在“Redis运行在可信环境”这个前提之下的,在生产环境中建议通过应用程序连接Redis.Redis可以配置只接受来自指定IP的的请求,可通过修改 ...
- 优化 SQL SELECT 语句性能
SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则.20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间. 检查索引:在SQ ...
- python 修改dataframe的列名
1. 修改全部列名 df.columns base_data_model.columns = [u'有效率',u'提交率',u'参与度',u'回放占比',u'主好评率',u'辅好评率',u'是否付费' ...
- Python函数学习
def func(x, y): print(x) print(y) func(x=1,2) #报错,关键参数一定不能放在位置参数前面 func(1,y=2) #可以正常运行 #参数组,适用于实参个数不 ...