Spring 中 ApplicationContext 和 BeanFactory 的区别
//从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com/hsp/beans.xml" ) ; ac.getBean("beanId");
当我们去实例化beans.xml,该文件中配置的 bean 就被实例化(不论你用还是不用,bean对象都在那),而且该对象是singleton单例的。(每个bean都有scope属性,可以人为的设置任意的bean为单态的,scope="singleton",scope="prototype"则每获得一个bean都是全新的bean)。
优点:预先加载,使用的时候速度快。
缺点:耗内存,所有的bean都被实例化了,但是可能只用到其中的很少
/从bean工厂取bea n BeanFactory factory = new XmlBeanFactory( new ClassPathResource ( "com/hsp/beans.xml" ) ) ; factory.getBean("beanId");
如果使用 BeanFactory 去取bean ,当你只是实例化该容器,那么容器里的 beans 不会马上被实例化,只有当你使用getBean某个bean时,才会实时的创建。
优点:节约内存。
缺点:速度慢。
关于选择:只有在移动项目里使用beanfactory,大多数项目(90%)使用的都是ApplicationContext,因为可以提前加载,只是浪费点内存。
原文地址:
http://www.cnblogs.com/kanghaimeng/p/4660042.html