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

相关推荐
雨中飘荡的记忆7 分钟前
Retrofit:优雅的JAVA网络请求框架实战
java
方也_arkling8 分钟前
【JS】定时器的使用(点击开始计时,再次点击停止计时)
开发语言·前端·javascript
Thexhy9 分钟前
基础篇:Redis核心命令及用法
java·linux·redis
狂奔小菜鸡10 分钟前
Day33 | Java中的Optional
java·后端·java ee
啃火龙果的兔子10 分钟前
IntelliJ IDEA社区版下载安装
java·ide·intellij-idea
ckm紫韵14 分钟前
Cursor 与 IDEA 互相跳转教程
java·ide·intellij-idea·cursor·ai工具
一往无前fgs15 分钟前
PHP语言开发基础入门实践教程(零基础版)
开发语言·php
不会c嘎嘎15 分钟前
初识QT -- 第一个QT程序
开发语言·qt
渡过晚枫18 分钟前
[蓝桥杯/java/算法]攻击次数
java·算法·蓝桥杯
ByteX20 分钟前
Java8-Function创建对象替代Builder
java·开发语言