当前位置: 首页 > news >正文

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等。

http://www.mrgr.cn/news/1268.html

相关文章:

  • Nginx反向代理和前后端分离项目打包部署
  • GFS分布式
  • RabbitMQ-消息队列延迟队列二
  • Leetcode每日刷题之209.长度最小的子数组(C++)
  • 【drools】8.44 例子ubuntu24.04 运行;IntelliJ 修复java: 错误: 不支持发行版本 5
  • 叉车里程表系统,统计车辆行驶里程,提升叉车使用效率!
  • C++:C/C++的内存管理
  • Linux下用vim打开超大文件方法
  • centOS和麒麟V10系统,mysql数据库移植
  • 8.18 day bug
  • 【分布式系统】关于主流的几款分布式链路追踪工具
  • C语言:for、while、do-while循环语句
  • 最小路径和[中等]
  • 十一、OpenCVSharp 中的图像的特征提取
  • Linux--传输层协议UDP
  • Linux服务器(CentOS)安装redis
  • 针对thinkphp站点的漏洞挖掘和经验分享
  • 常见的排序算法汇总(详解篇)
  • 基于WEB的旅游推荐系统设计与实现
  • Android 11强制App固定user_rotation方向显示