高频面试题—聊一下Bean的生命周期

258 阅读2分钟

这是我参与8月更文挑战的第7天,活动详情查看: 8月更文挑战

关于Bean的生命周期,是面试中非常容易被问到的知识点了,同时也十分考验面试者对Spring的理解够不够深入。

下面我们就来说一下Bean的生命周期到底是怎么个流程吧。

首先,Bean一定是从创建,经历中间很多的过程,然后被使用,最后执行销毁方法来走完它的一生。

那么我们就将Bean的生命周期大概分为三个大点来说明。

一. 创建Bean,并且准备Bean的一些附属方法

二. 使用Bean

三. 销毁Bean

让我们来围绕这三点说一下吧。

一. 创建Bean,并且准备Bean的一些附属方法

首先,Bean会由程序来调用其构造函数进行初步构造。

然后,通过依赖注入方式对Bean的各属性,或者说是各setter方法进行注入信息。

其实如果没有其他的特殊实现的话,上面两步就已经创建Bean完成了;不过其中还会存在几个接口的实现,如果Bean实现了特定的几个接口,这个时候也会在创建Bean的过程中多出几步操作。

当Bean本身实现了BeanNameAware接口,这个时候会根据接口方法,来设置Bean的name。

当Bean本身实现了BeanFactoryAware接口,这个时候会根据接口方法,将BeanFactory设置给Bean。

当Bean本身实现了ApplicationContextAware接口,这个时候Spring会将当前Bean引入到应用上下文中,也就是说可以通过ApplicationContext获取到当前Bean。

当Bean本身实现了BeanPostProcessor接口时,则执行程序中的前置处理方法。

当Bean本身实现了InitializingBean接口时,这个时候还会执行afterPropertiesSet方法,进行配置的一个加载。

随后,就是执行自身的init方法,进行Bean的初始化。

最后,执行BeanPostProcessor中的后置处理方法,即创建完成。

二. 使用Bean

使用Bean就没有什么技术含量了,这个就是业务层面上的使用过程了。

三. 销毁Bean

当使用完成后要销毁时,这个时候会第一时间执行DisposableBean接口的destroy方法,随后再执行自身Bean自定义的destroy方法。