Spring5中文文档【11】IOC容器之ApplicationContext的附加功能
1. 前言
本系列基于最新5.3.10版本,大部分内容copy于官方文档…
官方文档地址
org.springframework.beans.factory 包提供了管理和操作 bean 的基本功能,org.springframework.context包添加了 ApplicationContext 接口,该接口扩展了BeanFactory接口,此外还扩展了其他接口,以更面向应用程序框架的风格提供附加功能。
功能:
- 通过MessageSource界面访问 i18n 风格的消息。
- 通过Resource Loader界面访问资源,例如 URL 和文件。
- 事件发布,即ApplicationListener通过使用接口发布到实现接口的bean ApplicationEventPublisher。
- 加载多个(分层)上下文,让每个上下文都通过HierarchicalBeanFactory 界面专注于一个特定的层,例如应用程序的 Web 层 。
1.1 BeanFactory接口
BeanFactory接口
BeanFactory用于访问Spring bean容器的根接口,体系庞大:

此接口由包含许多Bean定义的对象实现,每个定义均由String名称唯一标识。根据bean的定义,工厂将返回一个包含对象的独立实例(原型设计模式),或一个共享实例(对于Singleton设计模式的替代实例)。将返回哪种类型的实例取决于bean工厂的配置,API是相同的。
核心API如下:
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
// 返回一个实例
Object getBean(String var1) throws BeansException;
<T> T getBean(String var1, Class<T> var2) throws BeansException;
Object getBean(String var1, Object... var2) throws BeansException;
// 返回与给定对象类型唯一匹配的bean实例(如果有)
<T> T getBean(Class<T> var1) throws BeansException;
<T> T getBean(Class<T> var1, Object... var2) throws BeansException;
// 返回指定bean的提供程序,允许对实例进行延迟的按需检索,包括可用性和唯一性选项
<T> ObjectProvider<T> getBeanProvider(Class<T> var1);
// 返回指定bean的提供程序,允许对实例进行延迟的按需检索,包括可用性和唯一性选项,参数为必须匹配的类型
<T> ObjectProvider<T> getBeanProvider(ResolvableType var1);
// Bean是否存在
boolean containsBean(String var1);
// Bean是否单例模式
boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;
// Bean是否多例模式
boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;
// 检查具有给定名称的bean是否与指定的类型匹配
boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;
// 确定具有给定名称的bean的类型
@Nullable
Class<?> getType(String var1) throws NoSuchBeanDefinitionException;
@Nullable
Class<?> getType(String var1, boolean var2) throws NoSuchBeanDefinitionException;
// 返回给定bean名称的别名(如果有)
String[] getAliases(String var1);
}