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

相关推荐
seven97_top3 分钟前
CopyOnWriteArrayList:写时复制机制与高效并发访问
java
不穿格子的程序员7 分钟前
设计模式篇2——观察者模式:以直播间送礼系统举例
java·观察者模式·设计模式
一晌小贪欢8 分钟前
Python ORM 深度解析:告别繁琐 SQL,让数据操作如丝般顺滑
开发语言·数据库·python·sql·python基础·python小白
萤丰信息8 分钟前
四大核心技术领航,智慧园区重构产业生态新范式
java·大数据·人工智能·智慧城市·智慧园区
九号铅笔芯9 分钟前
社区评论系统设计
java·数据库·sql
J_liaty10 分钟前
客户端负载均衡与服务端负载均衡解释与对比
java·运维·负载均衡
m5655bj10 分钟前
Python 将 Markdown 转换为 Word 文档
开发语言·c#
2401_8914504611 分钟前
基于C++的游戏引擎开发
开发语言·c++·算法
小码过河.14 分钟前
设计模式——解释器模式
java·设计模式·解释器模式