經典Java面試題-Spring BeanFactory

[面試原題]web

       ApplicationContext和BeanFactory的區別面試

[正確答案]框架

       1.若是使用ApplicationContext,則配置的bean若是是singleton無論你用仍是不用,都被實例化。好處是能夠預先加載,壞處是浪費內存。它也能夠爲Bean配置lazy-init=true來讓Bean延遲實例化。code

2.BeanFactory,當使用BeanFactory實例化對象時,配置的bean不會立刻被實例化。當你使用該bean時纔會被實例化(getBean)。好處是節約內存,缺點是速度比較慢。多用於移動設備的開發上。xml

3.通常沒有特殊要求,應當使用ApplicationContext完成。對象

[面試技術點]繼承

Spring Bean初始化的方法。接口

[解讀]事件

1.     從ApplicationContext中取bean 內存

   ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");

   當咱們實例化bean.xml時,該文件中配置的bean都會被實例化。(該bean scope是singleton)

2.     從BeanFactory中取bean

BeanFactory factory= new XmlBeanFactory(new ClassPathResource("bean.xml"));

      factory.getBean("boweifeng");   //取bean的時候纔會實例化

當使用beanfactory去獲取bean,當你只是實例化該容器,那麼容器內的bean不會被實例化,只有當使用某個bean(getBean)時,如:factory.getBean("boweifeng"),纔會實時去實例化該bean。

[擴展]

       ApplicationContext接口,它由BeanFactory接口派生而來,於是提供BeanFactory全部的功能。ApplicationContext以一種更向面向框架的方式工做以及對上下文進行分層和實現繼承,ApplicationContext包還提供瞭如下的功能:

  • MessageSource, 提供國際化的消息訪問

  • 資源訪問,如URL和文件

  • 事件傳播 

  • AOP的功能

 

       三種獲取ApplicationContext對象引用的方法

1.         ClassPathXmlApplicationContext 經過類路徑。

2.         FileSystemXmlApplicationContext 經過文件路徑。

           ApplicationContext ac = FileSystemXmlApplicationContext("d:\\com\\bean.xml");

3.         XmlWebApplicationContext:從web系統中加載。

相關文章
相關標籤/搜索