转自:http://www.cnblogs.com/V1haoge/p/6106456.html
Spring中Bean的管理是其最基本的功能,根据下面的图来了解Spring中Bean的生命周期:
解说:
(1)BeanFactoryPostProcessor的postProcessorBeanFactory()方法:若某个IoC容器内添加了实现了BeanFactoryPostProcessor接口的实现类Bean,那么在该容器中实例化任何其他Bean之前可以回调该Bean中的postPrcessorBeanFactory()方法来对Bean的配置元数据进行更改,比如从XML配置文件中获取到的配置信息。
(2)Bean的实例化:Bean的实例化是使用反射实现的。
(3)Bean属性注入:Bean实例化完成后,利用反射技术实现属性及依赖Bean的注入。
(4)BeanNameAware的setBeanName()方法:如果某个Bean实现了BeanNameAware接口,那么Spring将会将Bean实例的ID传递给setBeanName()方法,在Bean类中新增一个beanName字段,并实现setBeanName()方法。
(5)BeanFactoryAware的setBeanFactory()方法:如果某个Bean实现了BeanFactoryAware接口,那么Spring将会将创建Bean的BeanFactory传递给setBeanFactory()方法,在Bean类中新增了一个beanFactory字段用来保存BeanFactory的值,并实现setBeanFactory()方法。
(6)ApplicationContextAware的setApplicationContext()方法:如果某个Bean实现了ApplicationContextAware接口,那么Spring将会将该Bean所在的上下文环境ApplicationContext传递给setApplicationContext()方法,在Bean类中新增一个ApplicationContext字段用来保存ApplicationContext的值,并实现setApplicationContext()方法。
(7)BeanPostProcessor预初始化方法:如果某个IoC容器中增加的实现BeanPostProcessor接口的实现类Bean,那么在该容器中实例化Bean之后,执行初始化之前会调用BeanPostProcessor中的postProcessBeforeInitialization()方法执行预初始化处理。
(8)InitializingBean的afterPropertiesSet()方法:如果Bean实现了InitializingBean接口,那么Bean在实例化完成后将会执行接口中的afterPropertiesSet()方法来进行初始化。
(9)自定义的inti-method指定的方法:如果配置文件中使用init-method属性指定了初始化方法,那么Bean在实例化完成后将会调用该属性指定的初始化方法进行Bean的初始化。
(10)BeanPostProcessor初始化后方法:如果某个IoC容器中增加的实现BeanPostProcessor接口的实现类Bean,那么在该容器中实例化Bean之后并且完成初始化调用后执行该接口中的postProcessorAfterInitialization()方法进行初始化后处理。
(11)使用Bean:此时有关Bean的所有准备工作均已完成,Bean可以被程序使用了,它们将会一直驻留在应用上下文中,直到该上下文环境被销毁。
(12)DisposableBean的destory()方法:如果Bean实现了DisposableBean接口,Spring将会在Bean实例销毁之前调用该接口的destory()方法,来完成一些销毁之前的处理工作。
(13)自定义的destory-method指定的方法:如果在配置文件中使用destory-method指定了销毁方法,那么在Bean实例销毁之前会调用该指定的方法完成一些销毁之前的处理工作。
注意:
1、BeanFactoryPostProcessor接口与BeanPostProcessor接口的作用范围是整个上下文环境中,使用方法是单独新增一个类来实现这些接口,那么在处理其他Bean的某些时刻就会回调响应的接口中的方法。
2、BeanNameAware、BeanFactoryAware、ApplicationContextAware的作用范围的Bean范围,即仅仅对实现了该接口的指定Bean有效,所有其使用方法是在要使用该功能的Bean自己来实现该接口。
3、第8点与第9点所述的两个初始化方法作用是一样的,我们完全可以使用其中的一种即可,一般情况我们使用第9点所述的方式,尽量少的去来Bean中实现某些接口,保持其独立性,低耦合性,尽量不要与Spring代码耦合在一起。第12和第13也是如此。
相关推荐
Spring Bean生命周期中的扩展接口主要包括: - 容器级扩展接口 - InstantiationAwareBeanPostProcessor:这个接口允许在Bean实例化之前和之后以及属性赋值之后进行扩展。这使得它可以在Bean的生命周期中多个点进行...
这两个后处理器接口提供了灵活的扩展点,允许开发者在Bean生命周期的关键点进行自定义操作。 ApplicationContext是BeanFactory的升级版,提供了更丰富的功能,包括事件发布、国际化等。在ApplicationContext中,...
初始化是Bean生命周期中的一个重要环节,通常包括以下几个步骤: 1. **构造函数创建**:当Bean需要被创建时,Spring会调用其无参构造函数(或通过`@Autowired`注解依赖注入的构造函数)来实例化Bean。 - 如上文...
它允许开发者定义Bean的生命周期和依赖关系,提供了低级别的配置选项。 - **ApplicationContext** 是BeanFactory的扩展,增加了更多面向应用的功能,如国际化、事件处理、资源加载等。它通常被开发者直接使用,因为...
在Spring框架中,Bean的生命周期管理是其核心功能之一,它允许开发者控制Bean从创建到销毁的整个过程。本文将详细解析Spring Bean的生命周期配置过程。 首先,Bean的生命周期始于实例化。当Spring容器...
在Spring框架中,Bean的管理是其核心特性之一,它涉及到Bean的创建、初始化、装配以及销毁等整个生命周期过程。本课件主要涵盖了以下几个关键知识点: 1. **控制反转(IoC)和依赖注入(DI)**:Spring的核心设计...
Spring提供了一种更加灵活的管理Bean生命周期的方式,即实现`BeanPostProcessor`接口。任何实现了这个接口的类都可以注册到Spring容器中,它有两个关键方法:`postProcessBeforeInitialization()`和`...
例如,`DefaultListableBeanFactory`类负责大部分Bean的生命周期管理,而`BeanPostProcessor`接口的相关实现则提供了扩展点,使得我们能够自定义Bean的处理逻辑。 在实际应用中,理解Bean的生命周期对于优化性能、...
下面我们将深入探讨Spring Bean的生命周期、配置方式以及相关API。 1. Spring Bean 的生命周期 - 定义:Spring Bean是被Spring容器管理的对象,它们通过XML、Java注解或Java配置类进行声明。 - 初始化:Spring...
Spring自动扫描的Bean同样遵循Spring的生命周期管理。这包括初始化方法、销毁方法、以及基于回调的生命周期处理。例如,你可以使用`@PostConstruct`和`@PreDestroy`注解来标识初始化和销毁方法。 ### **其他注解** ...
2. **Bean后处理器(Bean Post Processors)**: 这是Spring框架中的另一个扩展点,可以在bean初始化前后执行自定义逻辑。例如,我们可以定义一个后处理器来实现属性的自动填充、AOP代理的创建等。通过实现`...
除了上述基本的生命周期管理,Spring还提供了其他的扩展点,如BeanPostProcessor接口,允许自定义逻辑在Bean实例化前后介入。此外,通过实现SmartLifecycle接口,开发者可以控制Bean的启动和停止,使其与应用程序的...
总的来说,"Spring_Dependency_Injection_Training"涵盖了Spring框架中的核心概念,包括依赖注入和Bean生命周期管理。通过深入学习,你可以提高Java开发的效率,编写出更加灵活、可维护的代码。在这个过程中,你将...
Spring中的BeanDefinition是核心概念,它是Spring IOC容器的基础,用于描述Bean的元数据,包括Bean的行为、依赖关系和其他...通过这个过程,可以更好地理解Spring如何实现IoC和AOP,以及如何优雅地管理Bean的生命周期。
提取了Spring的核心逻辑,极大地简化了代码,并完善了Spring的核心功能,例如IoC和AOP,资源加载器,事件侦听器,类型转换,容器扩展点,Bean生命周期和作用域以及应用程序上下文,被保留。 如果这个项目可以为您...
摘录了spring的核心逻辑,代码极度简化,保留spring的核心功能,如IoC和AOP,资源加载器,事件监听器,类型转换,容器扩展点,bean生命周期和作用域,应用某些等核心功能。 如果本项目能帮助到你,请给个STAR,谢谢...
总结一下,Spring框架的bean生命周期管理是一个关键特性,它允许开发者精细控制对象的创建、初始化、使用和销毁过程。通过这个示例项目,你可以学习如何利用Spring提供的工具和接口来优化和定制bean的生命周期,从而...
1. **Spring Core**:这是Spring框架的基础,提供了IoC(Inversion of Control)容器,通过XML或Java配置管理对象的生命周期和依赖关系。IoC使得应用程序的组件解耦,提高了可测试性和可维护性。 2. **Bean工厂...
通过“spring-hook-test”项目,你可以深入理解Spring框架的内部工作机制,掌握Bean生命周期管理的精髓,并学会如何在实际项目中有效利用这些扩展点。同时,Spring Boot的使用将使你的开发过程更加高效,让代码更具...
默认情况下,Spring以`singleton`作用域创建Bean,意味着在整个容器生命周期内,只会有一个实例。如果需要每次请求或调用时都创建新的实例,可以设置为`prototype`作用域。此外,对于Web应用,还有`request`、`...