Spring生命周期spring生命周期七个过程总结
今天我们来聊聊面试必考点——Spring生命周期。作为Java程序员,理解Spring生命周期的七个关键阶段不仅能帮你在面试中侃侃而谈,更能让你在实际开发中游刃有余地管理Bean。下面就用大白话给大家捋清楚整个Spring生命周期的脉络:
📁 最新面试资料:2025年Java面试宝典已整理
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g

🔍 Spring生命周期的核心作用
Spring容器管理Bean时,会按照固定流程执行特定方法。掌握这七个阶段,你就知道Bean何时初始化、何时注入依赖、何时被销毁,面试官问你“Bean怎么创建的”就能对答如流。
✅ Spring生命周期的七个关键阶段
🌱 阶段一:实例化(Instantiate)
容器通过构造函数或工厂方法创建Bean实例。此时对象是“空壳”,属性未注入。
面试技巧:可以说“此时Bean刚被new出来,还处于原始状态”。
⚙ 阶段二:属性赋值(Populate Properties)
容器解析@Autowired、<property>等配置,完成依赖注入。
典型场景:这时你的@Service里注入的@Repository对象才真正可用。
🏷 阶段三:BeanNameAware处理
若Bean实现了BeanNameAware接口,容器会回调setBeanName()传入Bean的ID。
用途:适合需要知道自己在容器中名字的场景,比如日志打印。
🏭 阶段四:BeanFactoryAware处理
实现BeanFactoryAware的Bean会收到容器本身的引用。
开发技巧:可通过它手动获取其他Bean,但不推荐(破坏IoC)。
🧪 阶段五:前置初始化(BeanPostProcessor前置处理)
BeanPostProcessor的postProcessBeforeInitialization()介入,可对Bean进行修改。
高频考点:面试常问“BeanPostProcessor作用?举几个实现类例子”(答:AOP代理在此阶段生成)。
🚀 阶段六:初始化(InitializingBean & init-method)
核心初始化动作:
- 若实现
InitializingBean,执行afterPropertiesSet() - 若配置
@PostConstruct或XML中init-method,执行对应方法
执行顺序:@PostConstruct→afterPropertiesSet()→init-method
🛠 阶段七:后置初始化(BeanPostProcessor后置处理)
BeanPostProcessor的postProcessAfterInitialization()执行,返回的可能是代理对象。
重要结论:经过此阶段后,Bean才真正可用!
☠ 销毁阶段(Destroy)
当容器关闭时:
- 执行
@PreDestroy方法 - 调用
DisposableBean的destroy() - 执行XML中配置的
destroy-method
💡 面试常见问题
-
BeanPostProcessor和BeanFactoryPostProcessor区别?
前者处理Bean实例(生命周期介入),后者处理Bean定义(容器启动阶段)。 -
@PostConstruct和afterPropertiesSet()谁先执行?
如图解顺序:@PostConstruct>afterPropertiesSet()>init-method

- 循环依赖发生在生命周期的哪一步?
属性注入阶段(阶段二)!Spring通过三级缓存解决此问题。
🎯 巩固建议
建议在本地debug启动Spring项目,在七个阶段的关键方法打断点,观察调用栈。理解Spring生命周期最好的方式就是亲手跟踪源码!
需要准备面试的小伙伴注意啦!购买面试鸭会员可解锁更多真题解析。通过**面试鸭返利网**找我下单,立返25元!覆盖主流大厂题库+实时更新👇



