Spring应用上下文(Application Context)的生命周期涉及多个阶段,主要包括以下几个关键点:
-
实例化(Instantiation):
- 当应用程序启动时,Spring容器会实例化ApplicationContext。这包括创建一个或多个BeanFactory实例以及加载应用程序的配置。
-
配置(Configuration):
- 在实例化阶段之后,Spring容器会读取并解析配置信息。这可能涉及XML配置文件、Java配置类或注解等。在这个阶段,Spring容器确定Bean的定义、依赖关系和其他配置。
-
注册 Bean 定义(Bean Definition Registration):
- 在配置阶段,容器将注册所有配置的Bean定义。这包括Bean的类、作用域、生命周期回调等信息。
-
实例化 Bean(Bean Instantiation):
- 在Bean定义注册后,Spring容器开始实例化每个Bean。这可能涉及到构造函数的调用,或者其他方式的实例化,具体取决于配置和Bean的性质。
-
属性赋值和依赖注入(Property Population and Dependency Injection):
- 容器在实例化Bean后,将会为Bean的属性赋值,执行依赖注入。这是通过Setter方法、字段注入或构造函数注入等方式完成的。
-
BeanPostProcessor的前置处理(BeanPostProcessor’s pre-process):
- 如果有注册的
BeanPostProcessor
实现类,它们的postProcessBeforeInitialization
方法将在Bean的初始化之前被调用。在这个阶段,可以执行一些额外的逻辑。
- 如果有注册的
-
初始化(Initialization):
- 在完成属性赋值和依赖注入后,如果Bean实现了
InitializingBean
接口,或者在配置中指定了init-method
属性,Spring容器将调用Bean的初始化方法。这是Bean生命周期的一个重要阶段。
- 在完成属性赋值和依赖注入后,如果Bean实现了
-
BeanPostProcessor的后置处理(BeanPostProcessor’s post-process):
- 与第6阶段类似,如果注册了
BeanPostProcessor
的实现类,它们的postProcessAfterInitialization
方法将在Bean的初始化之后被调用。
- 与第6阶段类似,如果注册了
-
使用(In Use):
- 在完成初始化之后,Bean可以被应用程序使用。它们会一直保持在容器中,直到应用程序结束。
-
销毁(Destruction):
- 当应用程序关闭时,如果Bean实现了
DisposableBean
接口,或者在配置中指定了destroy-method
属性,Spring容器将调用Bean的销毁方法。在这个阶段,开发者可以执行一些清理工作。
- 当应用程序关闭时,如果Bean实现了
理解这些阶段有助于开发者在需要的时候介入Bean的生命周期,执行一些额外的逻辑,以满足特定的需求。
Was this helpful?
0 / 0