监控容器中Bean的生命周期

对于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)方法。

猜你喜欢

转载自blog.csdn.net/u012131610/article/details/88226972