Spring · 主观题 · 第 57 题
Java 后端开发面试 · 第 57 题
描述 Spring Bean 的生命周期。
参考答案
1. 实例化:根据 BeanDefinition,通过构造器或工厂方法创建对象。
2. 属性填充:依赖注入(@Autowired 等),这一步借助三级缓存处理单例的循环依赖。
3. Aware 回调:BeanNameAware、BeanFactoryAware 等(ApplicationContextAware 由 ApplicationContextAwareProcessor 在下一步的前置处理中回调)。
4. BeanPostProcessor 的前置处理 postProcessBeforeInitialization(@PostConstruct 在这个阶段执行)。
5. 初始化:InitializingBean.afterPropertiesSet,然后是自定义的 init-method。
6. BeanPostProcessor 的后置处理 postProcessAfterInitialization:AOP 代理通常在这一步生成,所以容器里放的可能是代理对象。
7. 使用。
8. 销毁:容器关闭时依次执行 @PreDestroy、DisposableBean.destroy、自定义的 destroy-method。prototype Bean 的销毁不由容器管理。
解析
实例化、属性填充、初始化、销毁四大阶段,加上 BeanPostProcessor 和 AOP 代理的时机。