我结合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。
相关推荐
张小姐的猫几秒前
【AI大模型接入SDK】 —— Ollama本地接入Deepseek谢亮_vipxieliang1 分钟前
ValidX与Maven/Gradle集成配置指南Nuanyt3 分钟前
JUC常见核心知识梳理01 线程 并发 JMM volatile 管程 锁 synchronized我命由我123458 分钟前
Android 控件 - ListAdapteradaierya11 分钟前
用 AI 解决音频转换编程问题何何____12 分钟前
web方向js考核题解CodeStats12 分钟前
【Java 类加载器】Java 类加载器完整体系深度拆解(中):URLClassLoader 能力剖析与继承委派辨析Terra.K14 分钟前
JAVA职业探索和学习----中间件开发目标ThornArmor15 分钟前
重铸1996|首秀点亮:编写 helloworld 并用 Makefile 自动化收割第一个 .z64 卡带镜像船厂电气自动化ai大模型17 分钟前
AI大模型与数学 第73课 秩的核心定义、矩阵秩的通用求解方法