说说Spring Bean的生命周期

Java面试 潘老师 8个月前 (09-06) 159 ℃ (0) 扫码查看

Java面试题:说说Spring Bean的生命周期

标准回答

Spring Bean的生命周期可以分为四大部分,包括Bean定义、Bean初始化、Bean的生存期和Bean的销毁。以下是详细的步骤:

1. Bean定义

  • Spring启动,查找并加载需要被Spring管理的Bean。
  • 进行Bean的实例化,创建Bean对象。

2. Bean的初始化

  • 对Bean进行属性的引入和值的注入,将属性值设置到Bean的属性中。
  • 如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法。
  • 如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将BeanFactory容器实例传递给Bean。
  • 如果Bean实现了ApplicationContextAware接口,Spring将调用Bean的setApplicationContext()方法,将Bean所在应用上下文的引用传入。

3. Bean的生存期

  • 如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法,在Bean初始化之前执行一些操作。
  • 如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法,或者如果Bean使用了init-method声明初始化方法,该方法也会被调用,用于执行Bean的初始化逻辑。

4. Bean的销毁

  • Bean已经准备就绪,可以被应用程序使用。
  • 如果Bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法,在Bean初始化之后执行一些操作。
  • 当应用上下文被销毁时,如果Bean实现了DisposableBean接口,Spring将调用它们的destroy()方法,或者如果Bean使用了destroy-method声明销毁方法,该方法也会被调用,用于执行Bean的销毁逻辑。

加分回答

需要注意的是,这个生命周期过程由Spring容器自动管理,但我们可以干预其中的两个环节:

  1. 我们可以自定义初始化方法,并在该方法前增加@PostConstruct注解,这样Spring容器将在调用setBeanFactory()方法之后调用该方法。
  2. 我们可以自定义销毁方法,并在该方法前增加@PreDestroy注解,这样Spring容器将在自身销毁之前调用这个方法。

版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/javainterview/8804.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】