Spring之Bean的前世今生之BeanDefinition简介

1. BeanDefinition 接口概述

  • 定义:Spring中用于描述bean对象的接口,是创建bean的基础。
  • 包含信息:Class信息、作用域(单例或原型)、依赖关系、初始化和销毁方法等。

2. BeanDefinition 实现类

  • 抽象基类:所有实现类都继承自AbstractBeanDefinition,提供公共属性和方法。
2.1 ChildBeanDefinition
  • 用途:用于继承父级BeanDefinition。
  • 特点:继承后父子关系固定,通过parentName属性标识。
2.2 GenericBeanDefinition
  • 用途:标准bean定义,用于编码方式注册BeanDefinition。
  • 特点:灵活设置父子关系,常用于注册自定义bean。
2.3 AnnotatedGenericBeanDefinition
  • 用途:扩展GenericBeanDefinition,支持注解元数据。
  • 特点:封装@Configuration注解类。
2.4 ScannedGenericBeanDefinition
  • 用途:等同于AnnotatedGenericBeanDefinition,区分扫描得到的BeanDefinition。
  • 特点:用于组件扫描加载的bean。
2.5 RootBeanDefinition
  • 用途:运行时统一视图,表示合并后的bean定义。
  • 特点:最完整,所有BeanDefinition最终转换为此类型。
2.6 ConfigurationClassBeanDefinition
  • 用途:表示配置类中的Bean定义。
  • 特点:通过@Bean注解定义的bean封装为此类型。
2.7 ClassDerivedBeanDefinition
  • 用途:封装通过registerBean方法注册的Bean定义。
  • 特点:继承自RootBeanDefinition,用于标识。

3. Spring启动过程

  • 解析配置:无论注解或XML,Spring启动时解析配置生成BeanDefinition对象。
  • 创建bean:根据BeanDefinition信息创建和配置bean。

4. 开发实践

  • 推荐使用:自Spring 2.5起,推荐使用GenericBeanDefinition注册BeanDefinition。
  • 自动管理:Spring自动管理BeanDefinition,开发者通常不需关心具体类型。
  • 后置处理器注册:Spring内置Bean注册通过RootBeanDefinition,如解析@Configuration@Autowired等。
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值