1. 继承关系(BeanFactory、ApplicationContext)
(1)BeanFactory:BeanFactory 是 Spring 容器中的顶层接口,它可以对 Bean 对象进行管理。
(2)ApplicationContext:ApplicationContext 是 BeanFactory 的子接口。它除了继承 BeanFactory 的所有功能外,还添加了对国际化、资源访问、事件传播等方面的良好支持。(一般 ApplicationContext 用的比较多)
2. 加载方式不同:
BeanFactory:采用延迟加载形式注入 Bean,只有使用到某个 bean 时才加载实例化,如果 Spring 配置存在问题,那么只有 BeanFactory 加载后使用才可以发现问题。
ApplicationContext:采用预加载机制,在容器启动时,一次性创建所有的 bean,这样可以避免 BeanFactory 接口出现的问题,在容器启动时就可以发现 Spring 配置中存在的错误;但缺点是会占用内存空间,当配置的 bean 较多时,程序启动会变慢。
3. 都支持 BeanPostProcessor、BeanFactoryPostProcessor
他们两个都支持 BeanPostProcessor、BeanFactoryPostProcessor,但两者之间的区别是:BeanFactory 需要手动注册,而 ApplicationContext 是自动注册