Spring BeanFactory和ApplicationContext的区别 ApplicationContext  BeanFactory

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

  ApplicationContext在构建核心容器时,创建对象采用的是立即加载的方式,也就是说,只要一读取完配置文件马上就创建配置文件中配置的对象。

  我们在AccountServiceImpl加上无参构造方法

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory 

  然后我们开始调试Client的main方法

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

   可以看到当获取核心容器后,对象就被立即创建了

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

 BeanFactory

  BeanFactory在构建核心容器时,创建对象采用的策略是延迟加载。也就是说,什么时候根据id获取对象,什么时候才真正创建对象。  

  我们在client里写上BeanFactory的代码

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

  XmlBeanFactory会通过读取resource来找到我们的bean配置文件,同样的,我们给程序打上断点

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

   当程序跑到这行时,我们可以看到,工厂已经构建完了

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

  但我们可以看到对象没有被创建

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory

   直到要创建as这个对象时,对象才被创建出来

Spring BeanFactory和ApplicationContext的区别
ApplicationContext
 BeanFactory