Spring中Bean的生命周期

1、生命周期介绍

Java Bean的生命周期指的是:Bean的创建、初始化、销毁
Spring为我们提供了多种方式介入Bean的生命周期,即在生命周期中加入额外的自定义逻辑。

  1. Bean的创建:指的是Spring通过构造方法,实例化Bean的过程。
  2. 属性赋值。之后才是Bean的初始化过程,Bean的初始化过程可以由用户直接介入,指定Bean的初始化逻辑,怎么介入下面会介绍。
  3. Bean的销毁:Bean的销毁指的是Spring容器销毁之前,Spring会执行的Bean中的销毁方法,销毁过程也可以由用户直接介入,指定Bean的销毁逻辑,怎么介入下面会介绍。

2、Bean的初始化

2.1 初始化逻辑介入

所谓的初始化逻辑介入指的是,由用户代码指定Bean的初始化逻辑,默认情况下,没有指定初始化方法的情况下,就什么也不做。可以通过如下几种方式设置自定义的Bean初始化逻辑:

  1. @Bean注解,@Bean注解中的initMethod属性用于指定Bean中的初始化方法。
  2. JSR250规范中的@PostConstruct注解,将该注解标注在Bean的某个方法上,该方法就为Bean的初始化方法。
  3. 实现InitializingBean接口,该接口的方法就是Bean的初始化方法。

2.2 初始化前后逻辑介入

2.1 中说明了如何指定Bean的初始化方法,有的时候,我们需要在Bean初始化之前或者Bean初始化之后主动介入完成某些额外的功能,此时就需要借助BeanPostProcessor接口。
BeanPostProcessor接口中有两组方法,分别是:

  1. postProcessBeforeInitialization,该方法会在Bean的初始化方法执行之前执行,该方法会返回一个Object类型的对象,返回的对象要么是原对象,要么是对原对象的包装对象,即增强,比如动态代理后的对象。
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
    
  2. postProcessAfterInitialization,该方法会在Bean的初始化方法执行后执行,该方法也会返回一个Object类型的对象,返回的对象要么是原对象,要么是对原对象的包装对象,即增强,比如动态代理后的对象。
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        return bean;
    }
    

3、Bean的销毁

Spring容器在停止前会主动调用Bean的销毁方法(如果有的话),因此可以借助销毁方法完成某些资源的释放等。Bean的销毁方法也可以完全由用户介入,介入的方法有如下几种:

  1. @Bean注解,@Bean注解中的destroyMethod属性用于指定Bean中的哪个方法为Bean的销毁方法。
  2. JSR250规范中定义的@PreDestroy注解,该注解用于标注Bean的方法,被标注的方法为Bean的销毁方法。
  3. 实现DisposableBean接口,该接口中的方法会在Bean销毁前被调用执行。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值