您的位置:首页 > 移动开发

spring 中ApplicationContext与beanfactory的区别

2015-04-10 11:23 701 查看


四、ApplicationContext与beanfactory的区别

从ApplicationContext应用上下文容器中获取bean和从bean工厂容器中获取bean的区别?
具体案例:
1、从ApplicationContext中获取bean

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
当我们去实例化beans.xml,该文件中配置的bean被实例化,(该bean的scope是singleton(单例))
2、如果我们使用beanfactory去获取bean,当你只是实例化该容器,那么容器的bean不被实例化,只有当你去使用getBean某个bean是,才会实时的创建
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
factory.getBean("student");

结论:
1、如果使用ApplicationContext,则配置的bean如果是singleton(单例)不管你用不用都被实例化,好处就是可以预先加载,坏处是浪费内存,
2、如果是用BeanFactory,则当你实例化该对象的时候,配置的bean不会被马上实例化,当你使用的时候才会被实例化(就像延缓加载机制)好处就是节约内存,缺点是速度回降慢,
3规则:一般没有特殊的要求,应当使用ApplicationContext完成(90%以上的项目)

使用ApplicationContext三种经常用到的实现:
1、ClassPathXmlApplicationContext->从类路径加载
2、FileSystemXmlApplicationContext->从文件系统加载
举例:ApplicationContext ac = newFIleSystemXmlApplicationContext("C:\Users\Workspaces\MyEclipse
8.5\myspring\src\com\zqx\inter\beans.xml");
3、XmlWebApplicationContext->从web系统中加载(当tomcat启动的时候加载)

出处http://blog.csdn.net/evankaka
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: