BeanFactory 和 ApplicationContext 的区别

cnblogs 2024-10-26 08:39:00 阅读 91

这是 Spring Framework 对 ApplicationContext 的解释:

<code>The org.springframework.context.ApplicationContext interface represents the Spring IoC container and is responsible for instantiating, configuring, and assembling the beans.

ApplicationContext 代表 Spring 的 IOC 容器,负责实例化、配置和组装 bean。

Spring Framework 把 ApplicationContext 称为<code>容器,其实不是太准确,真正的容器应该是 org.springframework.beans.factory.BeanFactory,不过 ApplicationContext 是 BeanFactory 的子接口,并提供 AutowireCapableBeanFactory 的引用,这样 ApplicationContext 就拥有了 Bean 读取和装载的能力,因此,一般也笼统的称 ApplicationContext 为容器

再回到区别上来,这是 Spring Framework 的描述:

In short, the BeanFactory provides the configuration framework and basic functionality, and the ApplicationContext adds more enterprise-specific functionality.

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,

MessageSource, ApplicationEventPublisher, ResourcePatternResolver {

}

可以看到 ApplicationContext 还扩展了其它接口,提供了其它功能:

  • 通过 MessageSource 提供 i18n 国际化支持;
  • 通过 ResourceLoader 提供资源的加载,比如 class path 或系统资源;
  • 通过 ApplicationEventPublisher 对实现了 ApplicationListener 的 bean 进行事件通知;
  • 通过 HierarchicalBeanFactory 加载多个上下文;


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。