文档章节

Spring容器中Bean的生命周期

shamgod_code
 shamgod_code
发布于 2016/10/18 01:13
字数 532
阅读 51
收藏 0

Spring可以管理singleton作用域Bean的生命周期。对于singleton作用域的Bean,Spring容器知道Bean何时实例化结束、何时销毁。Spring可以管理实例化结束之后和销毁之前的行为。管理Bean的生命周期行为主要有如下两个时机:

1 注入依赖关系之后
2 即将销毁Bean之前

依赖关系注入之后的行为:

Spring提供两种方式在Bean全部属性设置成功后执行特定行为:

方法 描述
使用init-method属性(good) 使用init-method属性指定某个方法应在Bean全部依赖关系设置结束后自动执行。此种方法不需将代码与Spring接口耦合在一起,代码污染小。
实现InitializingBean接口 让Bean类实现InitializingBean接口,该接口提供一个方法:void afterPropertiesSet() throws Exception,Spring容器会在为该Bean注入依赖关系之后,接下来调用该Bean所实现的afterPropertiesSet()方法

如果一个类既实现了InitializingBean接口,同时在xml配置文件中也为它的实例配置了init-method属性,那么在完成依赖注入之后,程序先调用afterPropertiesSet()方法进行初始化,再调用init-method属性指定的方法进行初始化。

Bean销毁之前的行为:

Spring提供两种方式定制Bean实例销毁之前的特定行为:

方法 描述
使用destroy-method属性(good) destroy-method属性指定某个方法在Bean销毁之前自动执行。此种方法不需将代码与Spring接口耦合在一起,代码污染小。
实现DisposableBean接口

让Bean类实现DisposableBean接口,该接口提供一个方法:void destroy() throws Exception,Spring容器会在销毁Bean之前,调用该Bean所实现的destroy()方法

如果一个类既实现了DisposableBean接口,同时在xml配置文件中也为它的实例配置了destroy-method属性,那么在销毁实例之前,程序先调用destroy()方法,再调用destroy-method属性指定的方法。

Spring容器中Bean生命周期图示:

© 著作权归作者所有

shamgod_code
粉丝 5
博文 82
码字总数 31063
作品 0
杭州
私信 提问
Spring中管理Bean依赖注入之后和Bean销毁之前的行为

对于Singleton作用域的Bean,Spring容器将会跟踪它们的生命周期,容器知道何时实例化结束、何时销毁。Spring可以管理Bean在实例化结束之后和Bean销毁之前的行为。 Bean依赖关系注入之后的行为...

摆渡者
2014/03/06
0
0
Spring Bean的生命周期,《Spring 实战》书中的官方说法

连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试。这里找到了Spring 实战中的官方说法。希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看...

致未来的自己
2018/08/02
0
0
Spring Bean的生命周期

1.当调用者通过getBean(beanName)向容器请求某一个Bean时,如果容器注册了org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor接口,在实例化Bean之前,将调用接...

我吃草莓
2014/04/10
0
0
spring4.0之二:@Configuration的使用

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfi...

文文1
2018/06/01
0
0
Spring中关于bean的作用域与生命周期

在Spring中,那些组成应用程序的主体及由Spring IoC容器所管理的对象,被称之为bean。简单地讲,bean就是由IoC容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什...

忻胜霄
2018/06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cesium中级4 - 空间数据可视化(二)

Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ Viewer中的Entity功能 让我们看看Viewer为操作entities提供出来的功能函数。 选中和描述 点击Viewer中的e...

Cesium中文网
23分钟前
1
0
Linux-CentOS7 安装VMware Workstation

Linux-CentOS7 安装VMware Workstation 太极之道关注0人评论1605人阅读2018-10-17 14:36:22 Linux-CentOS7 安装VMware Workstation 12 1、下载VMware 衔接地址 http://www.vmware.com/produc......

linjin200
26分钟前
1
0
centos7.5 部署flask+nginx+uwsgi+python3

centos7.5 部署flask+nginx+uwsgi+python3 ## uwsgi [uwsgi] master = true max-requests = 6000 processes = 6 threads = 6 chmod-socket = 664 thunder-lock = true buffer-size = 32768 #......

丁典
30分钟前
2
0
BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览

一、引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库,国内以阿...

阿里云官方博客
35分钟前
2
0
好代码是什么样的?

简评: 好代码是什么样的?相信不同的人会有不同的看法,正如「一千个读者,就有一千个哈姆雷特」,关键在于你有没有自己的标准。 这篇文章是我个人很喜欢的一家公司 - Atomic Spin 的 blog...

极光推送
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部