跳到主要内容

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);
}