Spring框架中的Bean生命周期:
所谓Bean的生命周期,简单粗暴来讲
就是bean从无到有调用了哪些方法 以及我们可以在每个阶段的哪些方法中对bean进行操作
1. 实例化
当Spring容器接收到创建Bean的请求时,首先会根据定义创建Bean的实例。
这个过程可以通过多种方式实现,如使用构造函数、工厂方法等。
这个阶段会调用Bean本身的构造函数比如自己的无参构造方法
2.属性赋值/依赖注入
这个阶段会调用bean本身的set方法进行赋值
3.指定bean的名字和id
看Bean是否实现了`BeanNameAware`或`BeanFactoryAware`接口,
如果有实现可以在重写的`setBeanName`和`setBeanFactory`方法中指定
传入Bean的ID和名字。
4.看全局有没有BeanPostProcessor的实现
如果有 会在在Bean的初始化方法(如`init-method`或者`@PostConstruct`注解的方法)之前调用
如果有任何`BeanPostProcessor`的实现,它们的`postProcessBeforeInitialization`方法将被调用。
5.看有没有InitializingBean的实现
如果有它们的afterPropertiesSet 会被调用
6. 初始化(Initialization):
Spring容器将调用Bean的初始化方法,这可以通过在Bean定义中指定`init-method`属性,或者使用`@PostConstruct`注解来实现。
7. 看全局有没有BeanPostProcessor的实现
如果有任何`BeanPostProcessor`的实现,
它们的`postProcessAfterInitialization`方法将被调用。
8. 使用Bean:
此时,Bean已经完全初始化并准备好被应用程序使用。
Spring容器会将这个Bean的管理权交给应用程序,直到Bean不再需要或者容器关闭。
9. 看有没有DisposableBean的实现
如果有实现DisposableBean接口 重写的`destroy`方法将被调用。
10 销毁bean 调用的是destroy-method