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

相关推荐
Boop_wu7 分钟前
[Java EE] 多线程进阶(JUC)(2)
java·jvm·算法
pale_moonlight7 分钟前
十、 Scala 应用实践 (上)
大数据·开发语言·scala
小坏讲微服务8 分钟前
SpringCloud整合Scala实现MybatisPlus实现业务增删改查
java·spring·spring cloud·scala·mybatis plus
N***p36510 分钟前
五大消息模型介绍(RabbitMQ 详细注释版)
java·rabbitmq·java-rabbitmq
6***v41725 分钟前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
1***s63225 分钟前
Rust在WebAssembly中的应用实践
开发语言·rust·wasm
水痕0126 分钟前
go使用cobra来启动项目
开发语言·后端·golang
雨中飘荡的记忆39 分钟前
深入理解设计模式之单例模式
java·设计模式
scixing43 分钟前
函数式编程 第八讲 循环者,递归也
开发语言·c#
程序员西西1 小时前
Spring Boot整合MyBatis调用存储过程?
java·后端