spring 中ApplicationContext与beanfactory的区别

来源:互联网 发布:js事件代理 on 编辑:程序博客网 时间:2024/05/18 18:18




四、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
0 0
原创粉丝点击