简单来说,Spring Bean的生命周期只有四个阶段:实例化 Instantiation --> 属性赋值 Populate --> 初始化 Initialization --> 销毁 Destruction。

具体来说分为以下步骤:
1.当容器启动时,Bean的实例化。Bean容器找到配置文件中Spring Bean的定义。Bean容器利用Java Reflection API创建一个Bean的实例。
2.Bean的属性赋值。利用set()方法设置一些属性值。
3.如果实现了其他*Aware接口,就调用相应的方法。
如果Bean实现了BeanNameAware接口,调用setBeanName()方法,传入Bean的名字。
如果Bean实现了BeanClassLoaderAware接口,调用setBeanClassLoader()方法,传入ClassLoader对象的实例。
如果Bean实现了BeanFactoryAware接口,调用setBeanClassFacotory()方法,传入ClassLoader对象的实例。
4.执行BeanPostProcessor接口的postProcessBeforeInitialization方法。
5.执行InitializingBean接口的afeterPropertiesSet()方法。
6.执行配置文件中定义的init-method属性指定的方法。
7.执行BeanPostProcessor接口的postProcessAfterInitialization()方法。
8.bean存在与容器中。
9.当容器结束时,Bean要销毁时,执行DisposableBean接口的destroy()方法。
10.执行配置文件中的定义的destroy-method属性指定的方法。
11.bean销毁。
Bean的作用域
(1)singleton:默认作用域,单例bean,每个容器中只有一个bean的实例。
(2)prototype:为每一个bean请求创建一个实例。
(3)request:为每一个request请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
(4)session:与request范围类似,同一个session会话共享一个实例,不同会话使用不同的实例。
(5)global-session:全局作用域,所有会话共享一个实例。如果想要声明让所有会话共享的存储变量的话,那么这全局变量需要存储在global-session中。
SpringBean生命周期详解与作用域解析
本文详细阐述了Spring框架中Bean的生命周期,从实例化、属性赋值、初始化到销毁的各个阶段,包括Bean的 Aware 接口、BeanPostProcessor 的处理以及自定义初始化和销毁方法。同时,介绍了Bean的五种作用域,如singleton、prototype等,解释了它们在不同场景下的应用。通过对SpringBean生命周期的理解,有助于更好地管理和控制Spring应用中的对象状态。
808

被折叠的 条评论
为什么被折叠?



