BeanDefinition是spring bean创建的元属性,bean的创建和属性配置都和其相关。一般注册到spring容器的beanDefinition类都是会被自动创建,我们可以通过创建并注册到容器来实现特定功能的实现。
类介绍public interface BeanDefinition extends AttributeAccessor, BeanmetadataElement {...}
类图如下:
BeanDefinition 元信息
| 属性 | 说明 |
|---|---|
| Class | Bean 全类名,必须是具体类,不能用抽象类或接口 |
| Name | Bean 的名称或者 ID |
| Scope | Bean 的作用域(如:singleton、prototype 等) |
| Constructor arguments | Bean 构造器参数(用于依赖注入) |
| Properties | Bean 属性设置(用于依赖注入) |
| Autowiring mode | Bean 自动绑定模式(如:通过名称 byName) |
| Lazy initialization mode | Bean 延迟初始化模式(延迟和非延迟) |
| Initialization method | Bean 初始化回调方法名称 |
| Destruction method | Bean 销毁回调方法名称 |
关键类介绍
- RootBeanDefinition – bean 创建前的最终定义、不允许被修改
- GenericBeanDefinition-- 通用 beanDefinition
- AnnotatedBeanDefinition --注解类的 beanDefinition
- ScannedGenericBeanDefinition --扫描@Component - - -@service 等注解生成的 BeanDefinition
- ConfigurationClassBeanDefinition --扫描 @Bean @Configuration 生成的 beanDefinition
方式 1:
DefaultListableBeanFactory.registerBeanDefinition
方式 2:
BeanDefinitionReaderUtils.registerWithGeneratedNameBeanDefinition 创建方式
1、BeanDefinitionBuilder
2、通过 AbstractBeanDefinition 以及派生类



