0%

spring-beanfactory

BeanFactory API 为 Spring 的 IoC 功能提供了底层基础。

它主要用于与 Spring 的其他部分和相关第三方框架的集成,它的 DefaultListableBeanFactory 实现是更高级别的 GenericApplicationContext 容器中的关键委托。

BeanFactory 和相关接口(如 BeanFactoryAware、InitializingBean、DisposableBean)是其他框架组件的重要集成点。由于不需要任何注释甚至反射,它们允许容器与其组件之间非常有效的交互。应用程序级 bean 可能使用相同的回调接口,但通常更喜欢声明式依赖注入,无论是通过注释还是通过编程配置。

请注意,核心 BeanFactory API 级别及其 DefaultListableBeanFactory 实现不会对要使用的配置格式或任何组件注释进行假设。所有这些风格都通过扩展(例如 XmlBeanDefinitionReader 和 AutowiredAnnotationBeanPostProcessor)进入,并在共享 BeanDefinition 对象上作为核心元数据表示进行操作。这就是使 Spring 的容器如此灵活和可扩展的本质。

BeanFactory or ApplicationContext

应该使用 ApplicationContext GenericApplicationContext 及其子类 AnnotationConfigApplicationContext 作为自定义引导的常见实现。这些是用于所有常见目的的 Spring 核心容器的主要入口点:加载配置文件、触发类路径扫描、以编程方式注册 bean 定义和带注释的类,以及(从 5.0 开始)注册功能 bean 定义。

下表列出了 BeanFactory 和 ApplicationContext 接口和实现提供的功能。

Feature BeanFactory ApplicationContext
Bean instantiation/wiring Yes Yes
Integrated lifecycle management No Yes
Automatic BeanPostProcessor registration No Yes
Automatic BeanFactoryPostProcessor registration No Yes
Convenient MessageSource access (for internalization) No Yes
Built-in ApplicationEvent publication mechanism No Yes