Bean的生命周期是指Bean在Spring容器中的创建、存活以及销毁的整个过程。这个过程可以分为多个阶段,每个阶段都有其特定的任务和操作。以下是Bean生命周期的详细解释:
一、Bean生命周期的主要阶段
-
Bean元信息配置阶段
- 此阶段主要是配置Bean的元信息,包括Bean的定义、属性、依赖等。这些信息可以通过XML文件、注解、Java配置类等方式进行定义。
-
Bean元信息解析阶段
- Spring容器启动后,会解析配置文件中定义的Bean元信息,将其转换成Spring内部的BeanDefinition结构。BeanDefinition包含了Bean的各种定义信息,如类名、作用域、是否延迟初始化、依赖的Bean等。
-
将Bean注册到容器中
- 解析完Bean元信息后,Spring容器会将BeanDefinition注册到容器中,以便后续进行实例化、初始化等操作。
-
BeanDefinition合并阶段
- 对于存在多个BeanDefinition的情况,Spring容器会进行合并处理,以确保最终只有一个有效的BeanDefinition。
-
Bean Class加载阶段
- 在实例化Bean之前,Spring容器会加载Bean的类定义。这一步是通过Java的类加载机制完成的。
-
Bean实例化阶段
- 此阶段Spring容器会根据BeanDefinition中的类名信息,使用反射机制创建Bean的实例。对于单例Bean,容器在启动时就会进行实例化;而对于多例Bean,则是在每次请求时才会进行实例化。
- 三级缓存处理:在实例化过程中,Spring会使用三级缓存来管理Bean的创建状态。这有助于解决Bean之间的循环依赖问题java——Spring 中循环依赖 三级缓存_synchronized(this.singletonobjects) {-CSDN博客。
-
属性赋值阶段
- 实例化完成后,Spring容器会根据BeanDefiniti