Spring BeanDefinition
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
BeanDefinition 注册方式
方式 1:
DefaultListableBeanFactory.registerBeanDefinition
方式 2:
BeanDefinitionReaderUtils.registerWithGeneratedName
BeanDefinition 创建方式
1、BeanDefinitionBuilder
2、通过 AbstractBeanDefinition 以及派生类