标准回答
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容器自动管理,但我们可以干预其中的两个环节:

程序员导航
优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站
- 我们可以自定义初始化方法,并在该方法前增加
@PostConstruct注解,这样Spring容器将在调用setBeanFactory()方法之后调用该方法。 - 我们可以自定义销毁方法,并在该方法前增加
@PreDestroy注解,这样Spring容器将在自身销毁之前调用这个方法。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...



