Spring-4 Bean的生命周期

生命周期

说道bean的生命周期,首先就应该想到一个流程:
实例化–》依赖注入 --》初始化–》销毁
我们来看看具体的代码:
在这里插入图片描述
前面我们说过,调用SpringApplication.run方法之后,除了启动spring容器,它的返回结果,就是我们的容器,问为了展示生命周期的销毁阶段,我加了一个close方法,用来关闭容器。

我们在准备一个叫LifeCycleBean的bean,加上@Component注解,这样他就会被扫描到并加入到容器中
在这里插入图片描述
为了展示生命周期的各个阶段,我们给他加了4个方法

  • 构造方法
  • 依赖注入的方法
  • 初始化方法
  • 销毁方法

启动看看他们的执行顺序
在这里插入图片描述
可以看到执行的顺序是:构造–》依赖–》初始化–》销毁

bean后置处理器

还有一个跟bean生命周期相关的,就是bean的后置处理器
我们先定义一个自己的后置处理器类,实现了2个最典型的bean后置处理器接口,然后重写了比较重要的6个方法
在这里插入图片描述
我们一个一个来看看

1 postProcessBeforeDestruction

bean销毁之前执行的方法
我们打印一下log,这里判断一下,当bean是我们刚刚定义的LifeCycleBean时,才打印。
在这里插入图片描述

2 postProcessBeforeInstantiation

bean实例化之前执行的方法,会在还没有调用构造方法之前执行。
这个方法会返回一个结果,如果返回不为null,就会替换我们的bean。
同样的我们也打印一下
在这里插入图片描述

3 postProcessAfterInstantiation

bean实例化之后执行的方法,如果这个方法返回的true,就会继续执行后续的依赖注入流程,但是如果返回的false,他就会跳过依赖注入的阶段。一般我们是不会修改他的返回值。
在这里插入图片描述

4 postProcessProperties

依赖注入阶段执行,有很多后置处理器都是在这个阶段去做的一些处理,例如@Autowired、@Value、@Resource这些都有相应的后置处理器在依赖注入阶段去做一些扩展功能。
前面的两个方法其实都很少有扩展功能,这个的扩展就比较多了,主要去解析依赖注入相关的注解。
在这里插入图片描述

5 postProcessBeforeInitialization

初始化之前执行的方法,他的返回结果同样会替换掉原始对象。
他的典型例子有两个,@PostConstruct,@ConfigurationProperties

6 postProcessAfterInitialization

初始化之后执行的方法,他的返回结果同样会替换掉原始对象。
他的典型例子就是做一些代理增强

我们启动来看看他们的执行时机
在这里插入图片描述

总结

这次我们学习到了bean的生命周期主要就是4个阶段:创建–》依赖注入 --》初始化–》销毁
除了这4个阶段以外,我们还知道在各个阶段里都可能会有一些功能增强,都是由bean的后置处理器来提供的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值