首页 > 项目 > 当前页面

Spring Bean 的生命周期

2026-06-24 NEW个对象

📌 Spring Bean 的生命周期

Spring Bean 从创建到销毁并不是一次简单的 new 对象,而是经过 Spring IoC 容器的一系列管理流程,包括实例化、依赖注入、初始化、使用以及销毁等多个阶段,Spring 还提供了大量扩展接口允许开发者介入生命周期。

🎯 生命周期流程

BeanDefinition加载 ↓ 实例化 Bean(Constructor) ↓ 属性注入(依赖注入) ↓ Aware 接口回调 ↓ BeanPostProcessor 前置处理 ↓ @PostConstruct ↓ InitializingBean.afterPropertiesSet() ↓ init-method ↓ BeanPostProcessor 后置处理(AOP代理在这里生成) ↓ Bean 可以正常使用 ↓ 容器关闭 ↓ @PreDestroy ↓ DisposableBean.destroy() ↓ destroy-method

🚀 生命周期各阶段

  • ① BeanDefinition 注册:Spring 扫描配置类或 XML,将 Bean 定义注册到 IoC 容器。
  • ② 实例化 Bean:通过构造方法创建对象。
  • ③ 属性填充:完成 @Autowired、@Resource 等依赖注入。(有的属性还有注入,比如没有标注 @Autowired的属性)
  • ④ Aware 回调:如果实现 BeanNameAware、BeanFactoryAware、ApplicationContextAware 等接口,会注入对应对象。
  • ⑤ BeanPostProcessor 前置处理:初始化之前执行,可修改 Bean。
  • ⑥ 初始化:依次执行 @PostConstruct、afterPropertiesSet()、init-method。(注入其他属性)
  • ⑦ BeanPostProcessor 后置处理:初始化完成后执行,Spring AOP 动态代理通常在这里创建。
  • ⑧ Bean 使用:业务代码正常调用 Bean。
  • ⑨ Bean 销毁:容器关闭时依次执行 @PreDestroy、destroy()、destroy-method。

💡 常见扩展点

扩展接口 作用
BeanPostProcessor Bean 初始化前后增强(AOP 核心)
InstantiationAwareBeanPostProcessor 实例化阶段扩展
BeanFactoryPostProcessor 修改 BeanDefinition
InitializingBean 初始化回调
DisposableBean 销毁回调
✅ 面试总结

Spring Bean 生命周期可以概括为:

实例化 → 属性注入 → Aware 回调 → BeanPostProcessor 前置 → 初始化(@PostConstruct、afterPropertiesSet、init-method) → BeanPostProcessor 后置(AOP) → Bean 使用 → Bean 销毁(@PreDestroy、destroy、destroy-method)。

其中 BeanPostProcessor 是整个生命周期中最重要的扩展点,也是 Spring AOP、事务、缓存等众多功能实现的基础。

相关文章

  • 算法常用的函数

    1、求一个数的n的m次方

    NEW个对象 2025-01-13

  • Kafka 是否会弄丢数据?

    当然会 kafka分为生产者、服务端、消费端

    NEW个对象 2025-01-11

  • 给第三方提供接口需要注意哪些?

    给第三方提供接口需要注意哪些? 1、需要做授权,在项目中集成OAuth2。 2、如果不需要授权,提供API密钥,一个字符串,可以通过UUID生成。 3、从安全的角度,可以进行加密解密、加签验签。 4、自我保护机制,可以对接口进行限流处理。

    NEW个对象 2024-10-29

NEW个对象 NEW个对象
JAVA是世界上最好的语言