监控容器中Bean的生命周期

本文深入探讨Spring框架中singleton和prototype作用域下Bean的生命周期管理,包括依赖注入后的初始化行为和销毁前的行为,以及如何通过init-method、destroy-method属性和InitializingBean、DisposableBean接口实现自定义的初始化和销毁操作。

对于prototype作用域的Bean,每次客户端请求spring都会创建一个新的实例,spring容器仅仅负责创建,创建完之后Bean实例完全交给客户端代码来管理,容器不再跟踪其生命周期。

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

①注入依赖关系之后

②即将销毁Bean之前

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

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

①使用init-method属性指定方法。

②实现InitializingBean接口。

第一种代码污染小

第二种需要实现接口里的一个方法void afterPropertiesSet() throws Exception; spring容器自动调用该方法。

如果两种方式同时存在,先执行afterPropertiesSet方法,再执行init-method属性指定的方法。

2.Bean销毁之前的行为:

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

①使用destroy-method属性指定方法。

②实现DisposableBean接口。

第一种方式代码污染小。

第二种方式需要实现接口里的一个方法void destroy() throws Exception;容器自动调用该方法。

如果两种方式同时存在,同样先执行接口的方法,再执行destroy-method属性指定的方法。

注意:

当Bean实现了ApplicationContextAware接口、BeanNameAware接口之后,spring容器会在该Bean依赖注入之后、初始化完成之前,也就是调用afterProperties方法(如果有)和init-method所指定的方法(如果有)之前,先回调SetBeanName(String name)、setApplicationContext(ApplicationContext applicationContext)方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值