Spring中bean类的生命周期|面试必问如何回答

简介: Spring中bean类的生命周期|面试必问如何回答
+关注继续查看

面试过程中,常常会被问到,bean的生命周期,那该如何回答呢?

spring的生命周期大致如下

1.需找所有的bean根据bean定义的信息来实例化bean,默认bean都是单例


2、使用依赖注入,spring按bean定义信息配置bean的所有属性


3、若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递bean的ID


4、若bean实现了BeanFactoryAware接口,工厂调用setBeanFactory() 方法传入工厂自身。


5、若bean实现了ApplicationContextAware()接口,setApplicationContext()方法会被调用


6、若bean实现了InitializingBean,则afterPropertiesSet被调用


7、若bean指定了init-method="init"方法,它将被调用。


8、若BeanPostProcessor和bean关联,则它们的postProcessBeforeInitialization()方法被调用


9、若有BeanPostProcessor和bean关联,则它们的postProcessAfterInitialization()方法被调用


注意:通过已上操作,此时的Bean就可以被应用的系统使用,并将保留在BeanFactory工厂中直到不再需要为止.但我们也可以通过10或者11进行销毁


10、若bean实现了DisposableBean接口,distroy()方法被调用


11、如果指定了destroy-method="close"定制的销毁方法,就调用这个方法


面试如何回答

那肯定会有很多人,这么多记不住,面试该如何应当呢?


面试官一般问到bean的生命周期,你可以这么说


spring在创建bean的时候,首先会根据bean的定义以及一些信息配置来实例化bean,然后bean若实现了前置处理器或者后置处理器的接口后,就会实现他们对应的方法,比如若bean实现了ApplicationContextAware()接口,setApplicationContext()方法会被调用,另外的具体的实现方法记不太清除了,反正就是一些实现了就执行,实现了就执行这样的顺序一次判断,最后就是bean如果实现了销毁的接口,就会将bean销毁,如果没有实现那就一直保留。


回答这个问题的时候一定要自信,让面试官认为你是知道的,只是这些接口没必要一个个去记下来,面试官都不清楚有这么多接口的具体的那个方法的名字要去实现的,但是你就自信的回答就可以了,千万不要支支吾吾,一旦面试官问你能不能举几个前置或者后置说一下,你就说记不到了,哪有程序员去记这些东西的


相关文章
|
10天前
|
XML Java 数据格式
spring的核心技术---bean的生命周期加案例分析详细易懂
spring的核心技术---bean的生命周期加案例分析详细易懂
|
10天前
|
XML 存储 Java
Spring bean生命周期
Spring bean生命周期
31 0
|
26天前
|
XML Java 数据格式
Spring之Bean的生命周期
Spring之Bean的生命周期
42 0
|
27天前
|
设计模式 XML Java
Spring的生命周期及Spring Bean单例和多例---超详细教学
Spring的生命周期及Spring Bean单例和多例---超详细教学
95 0
|
27天前
|
XML Java 数据格式
一篇文章了解Java spring中bean的生命周期!
一篇文章了解Java spring中bean的生命周期!
104 0
|
27天前
|
Java Spring 容器
Spring源码:Bean生命周期(终章)
本系列前面讲解了Spring的bean定义、bean实例化、bean初始化等生命周期阶段。这些步骤使我们能够了解bean从创建到准备好使用所经历的过程。但是,除了这些步骤,bean的销毁也是非常重要的一步。在本系列的最后,我们将深入探讨bean的销毁过程,包括在什么情况下会发生销毁、销毁的顺序以及如何在bean销毁之前执行一些清理任务等。通过学习bean的销毁过程,我们将更全面地了解Spring的bean生命周期。在Spring中,有多种方式可以销毁bean。其中一种方式是在应用程序关闭时显式地调用`applicationContext.close()`方法来关闭容器。这个方法将会销毁所有还没
|
27天前
|
XML Java 数据格式
Spring源码:Bean生命周期(五)
在今天的文章中,我们将深入探讨 Bean 的属性注入和初始化流程,从而使其成为一个真正意义上的 Bean。这个过程包括属性注入、Aware 接口回调、BeanPostProcessor 的前置和后置处理等多个步骤,通过本文的学习,读者将能够更深入地了解 Spring 框架中 Bean 的属性注入和初始化过程,为后续的学习和实践打下坚实的基础。
|
27天前
|
缓存 前端开发 Java
Spring源码:Bean生命周期(四)
在本文中,我们深入探讨了 Spring 框架中 Bean 的实例化过程,关于某些细节以后我会单独拿出一篇文章单独讲解,我们来总结下实例化都做了哪些事情:先从bean定义中加载当前类,因为最初Spring使用ASM技术解析元数据时只获取了当前类的名称寻找所有InstantiationAwareBeanPostProcessors实现类,并调用实例化前的方法postProcessBeforeInstantiation进行实例化,这里会使用构造方法进行实例化调用applyMergedBeanDefinitionPostProcessors找到所有MergedBeanDefinitionPostPro
|
27天前
|
存储 缓存 Java
Spring源码:Bean生命周期(三)
在之前的文章中,我们已经对 `bean` 的准备工作进行了讲解,包括 `bean` 定义和 `FactoryBean` 判断等。在这个基础上,我们可以更加深入地理解 `getBean` 方法的实现逻辑,并在后续的学习中更好地掌握`createBean` 方法的实现细节。
Spring源码:Bean生命周期(三)
|
27天前
|
Java Spring 容器
Spring源码:Bean的生命周期(二)
FactoryBean 和 BeanFactory 是两个不同的概念。前者是一个接口,我们可以在实现该接口时通过调用 getObject 方法来返回实例,同时 FactoryBean 本身也是一个实例。后者是 Spring 容器的工厂,通过其中的 bean 定义 Map 一个一个地实例化我们通过注解等方式注入进去的 bean 工厂。在判断 FactoryBean 时,如果当前 BeanFactory 中没有对应的 bean 定义,那么就会去父容器中寻找相应的 bean 定义并进行判断。如果我们的类实现了 SmartFactoryBean 接口,那么它将会在 Spring 容器启动时就会调用 g
相关产品
云迁移中心
推荐文章
更多