【转】spring bean的生命周期

spring bean生命周期
在传统的Java应用中,Bean的生命周期非常简单。 
Java的关键词new用来实例化Bean(或许他是非序列化的)。这样就够用了。 
相反,Bean的生命周期在Spring容器中更加细致。 
理解Spring Bean的生命周期非常重要,因为你或许要利用Spring提供的机会来订制Bean的创建过程。

1.容器寻找Bean的定义信息并且将其实例化。

2.受用依赖注入,Spring按照Bean定义信息配置Bean的所有属性。

3.如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的ID。

4.如果Bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。

5.如果BeanPostProcessor和Bean关联,那么它们的postProcessBeforeInitialzation()方法将被调用。

6.如果Bean指定了init-method方法,它将被调用。

7.最后,如果有BeanPsotProcessor和Bean关联,那么它们的postProcessAfterInitialization()方法将被调用。 
到这个时候,Bean已经可以被应用系统使用了,并且将被保留在Bean Factory中知道它不再需要。

有两种方法可以把它从Bean Factory中删除掉。

1.如果Bean实现了DisposableBean接口,destory()方法被调用。

2.如果指定了订制的销毁方法,就调用这个方法。

Bean在Spring应用上下文的生命周期与在Bean工厂中的生命周期只有一点不同, 
唯一不同的是,如果Bean实现了ApplicationContextAwre接口,setApplicationContext()方法被调用。

只有singleton行为的bean接受容器管理生命周期。 
non-singleton行为的bean,Spring容器仅仅是new的替代,容器只负责创建。

对于singleton bean,Spring容器知道bean何时实例化结束,何时销毁, 
Spring可以管理实例化结束之后,和销毁之前的行为,管理bean的生命周期行为主要未如下两个时机: 
Bean全部依赖注入之后 
Bean即将销毁之前

1)依赖关系注入后的行为实现: 
有两种方法:A.编写init方法  B.实现InitializingBean接口 
afterPropertiesSet和init同时出现,前者先于后者执行,使用init方法,需要对配置文件加入init-method属性

2)bean销毁之前的行为 
有两种方法:A.编写close方法  B.实现DisposableBean接口 
destroy和close同时出现,前者先于后者执行,使用close方法,需要对配置文件加入destroy-method属性

时间: 2024-10-11 22:31:43

【转】spring bean的生命周期的相关文章

Spring Bean的生命周期

Bean的初始化过程已经被Spring完全包装起来了,无法人工干预. Spring预留了两个回调方法的入口 回调方法:定义出来完成一定的功能,提供给回调者/服务器/上层容器调用的方法,叫做回调方法. Bean类 public class Bean1 { public Bean1() { //System.out.println("bean1...构造方法"); } public void show(){ System.out.println("bean1...方法"

Spring Bean的生命周期(非常详细)

Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢. 一.生命周期流程图: Spri

Spring Bean的生命周期(非常详细)(转载)

Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring容器.这里,我们讲的也是 ApplicationContext中Bean的生命周期.而实际上BeanFactory也是差不多的,只不过处理器需要手动注册. 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢. 一.生命周期流程图: Spri

Spring Bean的生命周期详解

Spring Bean的生命周期详解 Spring IoC容器的本质目的就是为了管理Bean,对于Bean而言,在容器中存在其生命周期,它的初始化和销毁也需要一个过程,下面主要对其生命周期进行一个详解的解释.生命周期主要是为了了解Spring IoC容器初始化和销毁Bean的过程,通过下图即可以掌握Spring IoC容器初始化与销毁Bean的过程. 通过上图,我们首先可以看到生命周期的步骤. 1)如果Bean实现了接口 BeanNameAware 的 setBeanName 方法,那么它就会调

Spring Bean的生命周期,《Spring 实战》书中的官方说法

连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试.这里找到了Spring 实战中的官方说法.希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看看源码最好(也包括我自己).哈哈 Bean 的生命周期 在传统的Java应用中,bean的生命周期很简单.使用Java 关键字 new 进行bean 实例化,然后该 bean 就可以使用了.一旦该bean 不再被使用,则由 java 自动进行垃圾回收. 相比之下,Spring 容器中的 bean 的

第37讲 谈谈Spring Bean的生命周期和作用域

在企业应用软件开发中,Java 是毫无争议的主流语言,开放的 Java EE 规范和强大的开源框架功不可没,其中 Spring 毫无疑问已经成为企业软件开发的事实标准之一.今天这一讲,我将补充 Spring 相关的典型面试问题,并谈谈其部分设计细节.今天我要问你的问题是,谈谈 Spring Bean 的生命周期和作用域?典型回答Spring Bean 生命周期比较复杂,可以分为创建和销毁两个过程.首先,创建 Bean 会经过一系列的步骤,主要包括:实例化 Bean 对象.设置 Bean 属性.如

Spring-2、Spring Bean 的生命周期

Spring框架中,一旦把一个Bean纳入Spring IOC容器之中,这个Bean的生命周期就会交由容器进行管理,一般担当管理角色的是BeanFactory或者ApplicationContext,认识一下Bean的生命周期活动,对更好的利用它有很大的帮助: 下面以BeanFactory为例,说明一个Bean的生命周期活动 Bean的建立, 由BeanFactory读取Bean定义文件,并生成各个实例 Setter注入,执行Bean的属性依赖注入 BeanNameAware的setBeanNa

在Spring Bean的生命周期中各方法的执行顺序

Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下十种: 通过实现 InitializingBean 接口来定制初始化之后的操作方法: 通过实现DisposableBean 接口来定制销毁之前的操作方法: 通过元素的 init-method属性指定初始化之后调用的操作方法: 通过元素的 destroy-method属性指定销毁之前调用的操作方法: 在指定方法上加上 @PostConstruct

初探Spring源码之Spring Bean的生命周期

写在前面的话: 学无止境,写博客纯粹是一种乐趣而已,把自己理解的东西分享出去,不意味全是对的,欢迎指正! Spring 容器初始化过程做了什么? 1 AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(); 实例了一个 AnnotationConfigApplicationContext对象,Spring中出来注解Bean定义的类有两个: Annotation