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

相关推荐
看海天一色听风起雨落2 分钟前
Python学习之装饰器
开发语言·python·学习
cyforkk3 分钟前
Spring 异常处理器:从混乱到有序,优雅处理所有异常
java·后端·spring·mvc
Want5958 分钟前
C/C++圣诞树①
c语言·开发语言·c++
生擒小朵拉12 分钟前
STM32添加库函数
java·javascript·stm32
Z_z在努力18 分钟前
【杂类】Spring 自动装配原理
java·spring·mybatis
老赵的博客19 分钟前
c++ 杂记
开发语言·c++
jimmy.hua22 分钟前
[C++刷怪笼]:set/map--优质且易操作的容器
开发语言·c++
小小菜鸡ing1 小时前
pymysql
java·服务器·数据库
getapi1 小时前
shareId 的产生与传递链路
java
w2sfot1 小时前
Passing Arguments as an Object in JavaScript
开发语言·javascript·ecmascript