BeanFactory与ApplicationContext的4个区别1个缺陷
目录
BeanFactory和ApplicationContext之间的关系及功能:
BeanFactory和ApplicationContext的加载形式:
BeanFactroy和ApplicationContext的注册方式:
BeanFactroy和ApplicationContext的创建方式:
BeanFactroy和ApplicationContext存在的缺陷:
BeanFactory和ApplicationContext都是Spring的两大核心接口,它们都可以当作Spring容器。
但它们之间也是有很大的区别的,我们可以从以下几个方面入手区分:
- BeanFactory和ApplicationContext之间的关系及功能
- BeanFactory和ApplicationContext的加载形式
- BeanFactroy和ApplicationContext的注册方式
- BeanFactroy和ApplicationContext的创建方式
- BeanFactroy和ApplicationContext存在的缺陷
BeanFactory和ApplicationContext之间的关系及功能:
BeanFactory是Spring中最底层的接口,是IOC的核心,定义了IOC的各种基本功能,包含各种bean的定义、加载、实例化、依赖注入和生命周期管理。
ApplicationContext接口则是BeanFactory的子类。除了提供BeanFactory具有的所有方法以外还提供更完整的框架功能:继承MessageSource,因此支持国际化、资源文件访问、同时加载多个配置文件等。
//底层代码,ApplicationContext为BeanFactory的子类
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,MessageSource, ApplicationEventPublisher, ResourcePatternResolver {
//各种方法...
}
BeanFactory和ApplicationContext的加载形式:
BeanFactory采用的是延迟加载的形式来注入bean,只有用到bean时才会对该Bean进行加载实例化。
ApplicationContext采用的是即时加载,在容器启动时,一次性加载所有Bean,可以提前发现Spring配置问题。
BeanFactroy和ApplicationContext的注册方式:
BeanFactory需要手动注册。
ApplicationContetx可以自动注册。
BeanFactroy和ApplicationContext的创建方式:
BeanFactory通常以编程的方式创建。
ApplicationContext还可以以声明的方式创建。
BeanFactroy和ApplicationContext存在的缺陷:
BeanFactory:延迟加载的方式导致了不能提前发现所存在的一些Spring配置问题。
ApplicationContext:即时加载的方式也导致其占用空间内存。当程序配置的Bean数量较多时,启动速度会慢。