SpringBoot面试题04-BeanDefinition

一、什么是 BeanDefinition?

BeanDefinition 是 Spring 用来"描述一个 Bean 的信息的对象"。

换句话说:

BeanDefinition = Bean 的"说明书 / 菜谱 / 配置单"。

不是 Bean 本身,而是:

  • 记录着这个 Bean 是什么

  • 怎么创建

  • 怎么注入依赖

  • 生命周期怎么管理


二、BeanDefinition 记录了什么?

以下信息全部保存在 BeanDefinition 里:

信息 示例 作用
Bean的类型 UserService.class 要 new 谁
构造参数 new UserService(orderService) 创建时需要谁
作用域 singleton / prototype 单例还是每次 new
是否懒加载 lazy-init 是否启动时就创建
是否需要自动注入 @Autowired DI 自动注入依赖
是否有 AOP 代理 动态代理信息 创建 Bean 时包装代理
初始化方法 afterPropertiesSet() Bean 初始化回调

一句话:BeanDefinition 记录了"怎么创建 Bean"。

2-1、常用方法

2-2、继承关系

测试:


三、BeanDefinition 的地位

Spring 创建 Bean 的流程是:

复制代码
① 扫描类路径
② 解析注解(@Component、@Service、@Bean 等)
③ 生成 BeanDefinition(记录 Bean 配置信息)
④ 把 BeanDefinition 缓存到 BeanFactory
⑤ 在需要时根据 BeanDefinition 实例化 Bean

也就是:

复制代码
先保存定义 → 再按定义创建

所以 BeanDefinition 是 Spring IoC 的基础


3-1、直观流程图

复制代码
ClassPath + 注解扫描
        ↓
  BeanDefinition(记录信息)
        ↓  放进
DefaultListableBeanFactory(Bean 工厂)
        ↓  按说明书创建
     实例化 Bean(new 对象 + 注入依赖 + AOP)

BeanDefinition 是连接"类 → Bean"的桥梁。


3-2、为什么不直接 new?还要 BeanDefinition 干啥?

因为 Spring 要实现:

功能 为什么需要 BeanDefinition
自动装配 需要提前解析依赖关系
AOP 代理 需要决定是否要增强 Bean
循环依赖处理 需要提前知道谁依赖谁
作用域管理 需要知道是否多例 or 单例
懒加载 需要记录什么时候创建 Bean

如果直接 new,将无法实现这些强大特性

所以:

BeanDefinition = Spring 能够比"直接 new"更强大的关键所在。


四、总结

复制代码
BeanDefinition = Bean 的说明书
Spring 先读取说明书(BeanDefinition)
再根据说明书创建 Bean(对象)
相关推荐
韩立学长2 小时前
基于Springboot的智慧管网灌溉系统i1agupa7(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
一 乐2 小时前
高校教务|教务管理|基于springboot+vue的高校教务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·教务管理
codervibe3 小时前
Spring Boot 热启动配置实战:从手动重启到秒级反馈
spring boot·后端
chxii3 小时前
Spring Boot 响应给客户端的常见返回类型
java·spring boot·后端
韩立学长3 小时前
【开题答辩实录分享】以《植物爱好者交流平台的设计与实现》为例进行答辩实录分享
spring boot·后端·mysql
一 乐5 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游
YDS8295 小时前
苍穹外卖 —— Spring Cache和购物车功能开发
java·spring boot·后端·spring·mybatis
苍老流年5 小时前
1. SpringBoot初始化器ApplicationContextInitializer使用与源码分析
java·spring boot·后端
星光一影5 小时前
基于SpringBoot智慧社区系统/乡村振兴系统/大数据与人工智能平台
大数据·spring boot·后端·mysql·elasticsearch·vue