Spring面试题--Spring的bean的生命周期

这个问题比较困难,设计到了spring的底层,但是通过这个的学习,可以帮助我们了解Spring容器是如何管理和创建bean实例,以及方便调试和解决问题。

BeanDefinition

bean的定义信息Spring容器在进行实例化时,会将xml配置的的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean

Spring面试题--Spring的bean的生命周期_第1张图片

 Spring面试题--Spring的bean的生命周期_第2张图片

bean的生命周期

Spring面试题--Spring的bean的生命周期_第3张图片

构造函数:通过实例化bean来构建函数

依赖注入:包括@authwire和@value标明的属性都是在这里注入的

BeanPostProcessor#before:bean的后置处理器,用来增强bean的功能,在初始化方法对应之前进行回调

BeanPostProcessor#after:bean的后置处理器,spring中一般对类进行增强,都是会用到下面的后置处理器

代码执行

Spring面试题--Spring的bean的生命周期_第4张图片

 Spring面试题--Spring的bean的生命周期_第5张图片

 Spring面试题--Spring的bean的生命周期_第6张图片

 Spring面试题--Spring的bean的生命周期_第7张图片

 Spring面试题--Spring的bean的生命周期_第8张图片

 通过 后置处理器进行增强Spring面试题--Spring的bean的生命周期_第9张图片

面试回答

Spring面试题--Spring的bean的生命周期_第10张图片

面试官:Spring的bean的生命周期

候选人: 嗯!,这个步骤还是挺多的,我之前看过一些源码,它大概流程是这样的 首先会通过一个非常重要的类,叫做BeanDefinition获取bean的定义信息, 这里面就封装了bean的所有信息,比如,类的全路径,是否是延迟加载,是 否是单例等等这些信息

在创建bean的时候,

第一步是调用构造函数实例化bean,

第二步是bean的依赖注入,比如一些set方法注入,像平时开发用的 @Autowire都是这一步完成

第三步是处理Aware接口,如果某一个bean实现了Aware接口就会重写方法 执行

第四步是bean的后置处理器BeanPostProcessor,这个是前置处理器

第五步是初始化方法,比如实现了接口InitializingBean或者自定义了方法 init-method标签或@PostContruct

第六步是执行了bean的后置处理器BeanPostProcessor,主要是对bean进行 增强,有可能在这里产生代理对象

最后一步是销毁bean

 

你可能感兴趣的:(spring,java,rpc)