Bean完整的生命周期从Spring容器的着手实例化Bean 开始,知道最终销毁Bean。这当中经过了许多的关键点,每个关键点都涉及特定的方法调用,可以将这些方法大致划分为三类:
[Bean自身的方法:如调用Bean构造函数实例化Bean,调用Setter设置Bean的属性以及通过的init-method 和 destroy-method所指定的方法;
Bean级生命周期接口方法:如BeanNameAware,BeanFactoryAware,InitializingBean和DisposableBean,这些接口由Bean直接实现;
容器级生命周期接口方法:上例用InstantiationAwareBeanPostProcessorAdapter和BeanPostProcessor这两个接口实现,一般称他们的实现类为后处理器。一般不由Bean直接实现,它们独立于Bean,实现类以容器附加装置的形式注册到Spring容器中。当Spring创建任何的Bean时,后处理器都会发生作用,所以这些后处理器是全局性的。
具体的生命周期即从着手实例化开始到销毁的具体步骤:
1.如果注册了InstantiationAwareBeanPostProcessor后处理器,执行InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()方法;
2.根据配置情况调用Bean构造函数或工厂方法实例化Bean;
3.如果注册了InstantiationAwareBeanPostProcessor后处理器,执行InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()方法;
4.如果配置了属性,在设置每个属性前调用InstantiationAwareBeanPostProcessor.postProcessPropertyValues()方法;
5.调用Bean的属性设置方法setXxx()方法设置属性值;
6.如果Bean实现了BeanNameAware.setBeanName()方法,将配置文件中该Bean对应的名称设置到Bean中通过setBeanName()方法;
7.如果Bean实现了BeanFactoryAware.setBeanFactory()方法,将调用setBeanFactory()接口的方法,将BeanFactory容器实例设置到Bean中;
8.调用BeanPostProcessor.postProcessBeforeInitialization(),入参是当前正在处理的Bean,beanName是当前Bean的配置名,返回的对象为加工处理后的Bean,可以在此方法中对Bean进行修改;
9.如果Bean实现了调用InitializingBean,调用InitializingBean.afterPropertiesSet()方法;
10.执行在通过init-method属性定义的初始化方法;
11.调用BeanPostProcessor.postProcessAfterInitialization()方法;
12.如果在中指定Bean的作用范围为scope="prototype",将Bean返回给调用者,调用者负责Bean后续生命管理,Spring不再管理这些Bean的生命周期。如果为Scope="singleton",则将Bean放入Spring IoC容器的缓存池,并将Bean引用返回给调用者,Spring继续对这些Bean进行后续的生命管理。
13.对于scope="singleton"的Bean,当容器关闭时,调用DisposableBean.destory()方法;
14.调用中destory-method方法。
Bean在Spring应用上下文的生命周期与其在BeanFactory中生命周期只有一点不同:
如果Bean中实现了ApplicationContextAware接口,则会调用setApplicationContext方法
分享到:
相关推荐
BeanFactory的Bean的生命周期流程图
在整个生命周期中,Spring提供了多种方式来实现Bean的初始化,例如使用init-method参数、InitializingBean接口等。 二、Bean的作用域 Bean的作用域是指Bean的生命周期和可用性。Spring框架提供了多种作用域,例如 ...
Bean生命周期的理解对于优化应用性能和理解Spring内部工作原理至关重要。这里我们将深入探讨Spring的Bean生命周期、容器周期以及工厂周期。 首先,让我们从Bean生命周期开始。在Spring中,Bean的生命周期包括以下几...
容器会在 Bean 的整个生命周期中执行不同的方法,包括实例化、设置属性、依赖注入、初始化、使用和销毁等阶段。 六、 小结 Spring Bean 生命周期是 Spring 框架中的一个核心概念,掌握 Spring Bean 生命周期可以...
在Spring框架中,Bean的生命周期管理和ApplicationContext的应用是两个核心概念,它们对于理解Spring如何管理和协调应用中的对象至关重要。本文将深入探讨这两个主题,并结合国际化(i18n)和事件传递来阐述它们在...
Spring框架是Java应用开发中的一个核心组件,尤其在企业级应用中广泛使用。Spring通过其IoC(Inversion of Control,控制反转)容器管理Bean的生命周期,...理解Bean生命周期对于有效管理和优化Spring应用至关重要。
这两个后处理器接口提供了灵活的扩展点,允许开发者在Bean生命周期的关键点进行自定义操作。 ApplicationContext是BeanFactory的升级版,提供了更丰富的功能,包括事件发布、国际化等。在ApplicationContext中,...
在 Bean 的生命周期中,我们需要了解 Bean 的生命周期案例,以便更好地理解 Bean 的生命周期。 本文主要研究了 Spring 框架中 Bean 的实例化过程,包括 Bean 的生命周期和循环依赖问题的解决方案。通过了解 Spring ...
通过这个接口,我们可以在bean的生命周期中执行一些自定义的操作。 ``` public class MyBeanPostProcessor implements BeanPostProcessor{ @Override public Object postProcessAfterInitialization(Object arg0, ...
2. Bean级生命周期接口方法:如BeanNameAware、BeanFactoryAware、InitializingBean和DisposableBean,它们提供了Bean在生命周期中关键节点的自定义操作。 3. 容器级生命周期接口方法:如BeanPostProcessor和...
《Spring学习笔记之bean生命周期》 在Spring框架中,Bean是核心组件,它们构成了应用程序的主要结构。理解Spring Bean的生命周期对于有效地管理和优化Spring应用程序至关重要。本文将深入探讨Spring Bean的生命周期...
3. **生命周期管理**:提供bean的初始化和销毁方法调用,允许开发者自定义bean的生命周期行为。 4. **作用域管理**:支持单例(singleton)、原型(prototype)等多种bean的作用域。 5. **配置元数据**:可以读取XML...
BeanFactory提供了加载配置元数据、实例化bean、注入依赖、管理bean生命周期等基本功能。当我们在配置文件中定义bean,并通过BeanFactory加载这些配置时,BeanFactory会根据配置创建bean实例。BeanFactory在需要时才...
在Spring框架中,Bean的生命周期管理是其核心功能之一,它允许开发者控制Bean从创建到销毁的整个过程。本文将详细解析Spring Bean的生命周期配置过程。 首先,Bean的生命周期始于实例化。当Spring容器...
Spring源码流程图是了解Spring框架核心组件和Bean生命周期的关键。下面我们将深入探讨Spring源码流程图,了解核心组件、Bean定义信息、Bean工厂、Bean生命周期和Aware接口的作用。 核心组件解析 在Spring框架中,...
Spring中Bean的生命周期使用解析 Spring中Bean的生命周期使用解析是Spring框架中的一种重要机制,用于管理Bean的生命周期。Bean的生命周期从创建到销毁都需要经过多个阶段,每个阶段都有其特定的作用。下面是Spring...
在Spring框架中,ApplicationContext是应用的核心,它管理着所有Bean的生命周期。本章将深入探讨Spring应用上下文的生命周期,从启动准备阶段到关闭阶段,包括各个关键步骤和相关组件的作用。 1. **Spring 应用上...
通过模拟`BeanFactory`,我们可以加深对Spring如何管理对象生命周期和依赖关系的理解。这对于日常开发和优化Spring应用非常有帮助,尤其是在解决依赖问题或自定义bean处理逻辑时。同时,了解这些基础知识也为理解和...