BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。
1.BeanFactroy:采用的是延迟加载形式来注入Bean的,只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。
ApplicationContext:它是在容器启动时,一次性创建了所有的Bean;
ApplicationContext启动后预载入所有的单实例Bean,所以在运行的时候速度比较快,因为它们已经创建好了。
相对于BeanFactory,ApplicationContext 唯一的不足是占用内存空间,当应用程序配置Bean较多时,程序启动较慢
2.BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:
BeanFactory需要手动注册,而ApplicationContext则是自动注册
3.BeanFactory通常以编程的方式被创建,ApplicationContext还能以声明的方式创建,如使用ContextLoader