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

相关推荐
我是唐青枫1 分钟前
Java Optional 实战指南:优雅处理空值与链式转换
java·开发语言
摇滚侠1 分钟前
SpringBoot 升级,依赖冲突如何解决
java·spring boot·spring
jack@london5 分钟前
eclipse启动tomcat6时报错OutOfMemoryError: PermGen space
java·ide·eclipse
小江的记录本11 分钟前
【JVM虚拟机】类加载机制:类加载器、双亲委派模型、好处、破坏双亲委派的场景(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
李少兄12 分钟前
Spring 对象创建范式:依赖注入与直接实例化的边界抉择
java·后端·spring
basketball61613 分钟前
设计模式入门:2. 工厂模式详解 C++实现
开发语言·c++·设计模式
Lumbrologist13 分钟前
【C++】零基础入门 · 第 16 节:智能指针
开发语言·c++
yu859395813 分钟前
MATLAB 分支定界法(Branch and Bound)实现
开发语言·matlab
小马爱打代码18 分钟前
Spring源码中的设计模式实战:从理论到源码的深度解析
java·spring·设计模式
学会去珍惜19 分钟前
c语言编程 C语言入门 c语言(C语言程序设计教程 c语言视频教程 c语言零基础
c语言·开发语言