Java面试题:SpringBean的生命周期

SpringBean的生命周期

BeanDefinition

Spring容器在进行实例化时,会将xml配置的信息封装成BeanDefinition对象

Spring根据BeanDefinition来创建Bean对象

包含很多属性来描述Bean

包括

beanClassName:bean的类名,通过类名进行反射

initMethodName:初始化方法名称

propertyValues:bean的属性值

scope:作用域

lazyInit:是否需要延迟初始化

Bean的生命周期

通过BeanDefinition获取bean定义信息
调用bean的构造函数
随后进行依赖注入
实现Aware接口(进一步对bean进行扩展,包括beanname,beanFactory,applicationContext)

重写setBeanName(),setBeanFactory(),setApplicationContext()得到对应的bean属性

BeanPostProcessor#before(前置后置处理器)
初始化方法(初始化方法+自定义init方法)

添加@PostConstruct注解自定义初始化方法

实现initializingBean接口重写afterPropertiesSet()方法定义初始化方法

BeanPostProcessor#after(后置后置处理器)AOP
销毁bean

添加@PreDestory定义bean的销毁方法

相关推荐
浩瀚地学几秒前
【Java】String
java·开发语言·经验分享·笔记·学习
松涛和鸣11 分钟前
25、数据结构:树与二叉树的概念、特性及递归实现
linux·开发语言·网络·数据结构·算法
莫物16 分钟前
Java后端请求不同环境下的同一接口,有的环境会出现乱码问题
java·开发语言
MM_MS20 分钟前
SQL Server数据库和Visual Studio (C#)联合编程
开发语言·数据库·sqlserver·c#·visual studio
吃炒鸡蛋29 分钟前
反射更新字段
java·服务器·前端
惺忪979840 分钟前
Qt C++11/14/17 新特性大全详解
开发语言·c++
Pacify_The_North44 分钟前
【C++11(二)】可变参数模板和 lambda表达式
java·开发语言·c++
顺顺 尼1 小时前
包装器c++11
开发语言·c++
阿里嘎多学长1 小时前
2025-12-05 GitHub 热点项目精选
开发语言·程序员·github·代码托管
王光环1 小时前
C语言写exe脚本
c语言·开发语言