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的销毁方法

相关推荐
吃好睡好便好4 分钟前
在Matlab中绘制抛物三维曲面图
开发语言·人工智能·学习·算法·matlab·信息可视化
半步仙人6 分钟前
MATLAB的几种取整操作总结
开发语言·matlab
伯远医学12 分钟前
Nat. Methods | 邻近标记技术:活细胞中捕捉分子互作的新利器
java·开发语言·前端·javascript·人工智能·算法·eclipse
RainCity12 分钟前
Java Swing 自定义组件库分享(五)
java·笔记·后端
woniu_buhui_fei15 分钟前
JVM垃圾回收
java·jvm
AC赳赳老秦20 分钟前
文案策划提效:OpenClaw批量生成活动文案、宣传海报配文,适配不同渠道调性
java·大数据·服务器·人工智能·python·deepseek·openclaw
wjs202421 分钟前
Matplotlib 轴标签和标题
开发语言
_codemonster24 分钟前
系统分析师系列目录
java·网络·数据库
XMYX-034 分钟前
27 - Go string 字符串处理与格式化:从底层原理到工程实践
开发语言·golang
赏金术士37 分钟前
Kotlin 协程面试题大全(Android 高频版)
android·开发语言·kotlin