AbstractBeanFactory 详解
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:应用程序启动的时间戳。
- 0000
- 0000
- 0000
- 0000
- 0000