内容提要
介绍Spring源码中的BeanDefinition概念及其实现类,包括手动向Spring容器注册Bean的方法。同时介绍了常见的BeanDefinition类型。
关键要点
-
Spring 源码中重要概念:BeanDefinition,表示 Bean 的定义。
-
BeanDefinition 是一个接口,继承自 BeanMetadataElement 和 AttributeAccessor 接口。
-
AttributeAccessor 接口定义了元数据的访问方法,具体实现为 AttributeAccessorSupport。
-
BeanDefinition 接口包含多个方法,用于描述 Bean 的属性和行为。
-
BeanDefinition 的实现类包括 AbstractBeanDefinition、RootBeanDefinition、ChildBeanDefinition、GenericBeanDefinition、AnnotatedBeanDefinition 等。
-
GenericBeanDefinition 兼具 RootBeanDefinition 和 ChildBeanDefinition 的功能,常用于手动注册 Bean。
-
AnnotatedBeanDefinition 用于表示通过注解配置的 Bean 定义,提供获取注解信息的功能。
-
通过 XML 文件定义的 Bean 最终解析为 GenericBeanDefinition。
-
RootBeanDefinition 主要用于定义父 Bean,而 ChildBeanDefinition 用于定义子 Bean。
-
ConfigurationClassBeanDefinition 表示通过 @Bean 注解定义的 Bean。
-
CreateFromClassBeanDefinition 用于创建对象并经过 Spring 的后置处理器。
-
ClassDerivedBeanDefinition 用于描述类派生的 Bean 元数据,使用较少。