Bean的生命周期

我结合Spring来讲下Bean的生命周期,整体分为创建、初始化、使用、销毁这几大块,步骤顺序是固定的。 第一步是实例化,Spring根据BeanDefinition调用构造器创建出对象,此时对象属性都还是空值。 第二步进行属性填充,完成依赖注入,像@Autowired自动装配就在这一步执行,给各个属性赋值。 第三步执行Aware接口回调,如果类实现了BeanNameAware、ApplicationContextAware这些接口,容器会把bean名称、上下文等资源注入进来。 第四步是初始化,顺序不能乱:先执行BeanPostProcessor的前置方法,接着依次执行@PostConstruct注解、InitializingBean的afterPropertiesSet方法、配置指定的init-method;全部完成后执行BeanPostProcessor后置方法,我们常用的AOP代理就是在这里生成的。 走完上面流程,Bean就准备好了,我们可以正常从容器获取使用。 最后是销毁阶段,只有单例Bean会由容器管理销毁,容器关闭时触发,执行顺序为@PreDestroy、DisposableBean的destroy方法、配置的destroy-method。多例Bean容器不会管控销毁,需要我们自己手动处理。 额外补充两点,单例Bean默认容器启动时就创建完整生命周期;多例每次获取才实例化,容器不负责销毁。后置处理器是全局钩子,能统一干预所有Bean。

相关推荐
懂点Tech1 小时前
ctfshow MISC入门图片篇(信息附加):misc41解题思路
开发语言·python
金銀銅鐵2 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
catchadmin2 小时前
PHP 8.7 协程新提案 让跨协程代码共享请求身份
开发语言·php
福建佰胜张工3 小时前
SMC 薄型气爪 MHF2-16D1 深度解析:平行开闭、低剖面结构在自动化装配中的选型与落地
java·服务器·安全·自动化
念何架构之路3 小时前
go-grpc设计思想
开发语言·后端·golang
catoop3 小时前
API Key 设计与安全生成方案:结构拆解、数据库设计与 Java 实现
java·数据库·安全
system_error_x3 小时前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
酷炫码神3 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
驭渊的小故事4 小时前
Spring AI Alibaba 实战:从maven依赖治理到声明式工具调用
java·人工智能·spring
Elastic 中国社区官方博客4 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es