说说Spring Bean的生命周期

IT 文章2年前 (2023)发布 小编
0 0 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容器自动管理,但我们可以干预其中的两个环节:

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

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

相关文章

暂无评论

暂无评论...