首页 > 热点资讯内容详情

AbstractBeanFactory 详解 2023-05-25 01:52:43

AbstractBeanFactory 是 BeanFactory 实现类的抽象基类,提供了 ConfigurableBeanFactory SPI 的全部功能。该类不仅支持基于列表的 Bean 工厂,还可以作为基于其他后端资源获取 Bean 定义的工厂实现的基类。

该类提供了非常全面的功能,包括:单例缓存、单例和原型 Bean 的区分、FactoryBean 的处理、别名、子 Bean 定义的合并和 Bean 销毁等。此外,它还能够管理 Bean 工厂的层次结构,通过实现 org.springframework.beans.factory.HierarchicalBeanFactory 接口自动委托给父工厂,以实现未知 Bean 的获取。

子类需要实现的主要模板方法是 getBeanDefinition 和 createBean。前者用于检索给定 Bean 名称的 Bean 定义,后者根据给定 Bean 定义创建 Bean 实例。这些操作通常在 DefaultListableBeanFactory 和 AbstractAutowireCapableBeanFactory 中实现。

总的来说,AbstractBeanFactory 提供了丰富的功能和通用的 SPI 支持,非常适合作为 BeanFactory 实现类的基类。

AbstractBeanFactory 是 Spring 容器中 BeanFactory 接口的一个抽象实现类,它包含以下属性:

1. parentBeanFactory:父级BeanFactory,如果当前BeanFactory无法解析请求Bean,则会委托父级BeanFactory进行解析。

2. beanClassLoader:Bean类的类加载器。

3. tempClassLoader:用于创建Bean的临时类加载器。

4. cacheBeanMetadata:是否缓存Bean元数据。

5. beanExpressionResolver:用于解析SpEL表达式的BeanExpressionResolver对象。

6. conversionService:用于处理类型转换的ConversionService对象。

7. propertyEditorRegistrars:PropertyEditorRegistrar对象列表,用于定制Bean属性编辑器。

8. customEditors:自定义PropertyEditor对象的映射,用于转换Bean属性的值。

9. typeConverter:类型转换器,用于处理类型转换的操作。

10. embeddedValueResolvers:EmbeddedValueResolver对象列表,用于处理Bean属性中的占位符。

11. beanPostProcessors:BeanPostProcessor对象列表,用于在Bean的初始化前或后执行一些回调操作,用于实现AOP和其他功能。

12. beanPostProcessorCache:用于缓存BeanPostProcessor对象的ConcurrentMap。

13. scopes:一组注册的BeanScope对象。BeanScope表示Bean的生命周期范围。

14. mergedBeanDefinitions:所有Bean定义的缓存,包括原始和包装的Bean定义。

15. alreadyCreated:已创建的Bean的缓存,包括用于提前实例化的单例Bean和非单例Bean的缓存。

16. prototypesCurrentlyInCreation:当前正在创建的原型模式Bean的缓存。

17. applicationStartup:应用程序启动的时间戳。

相关标签: AbstractBeanFactory 详解

发布评论