当前位置: 首页>后端>正文

Spring的Bean的生命周期各个阶段扩展方法

Spring的Bean的生命周期各个阶段扩展方法,Spring的Bean的生命周期各个阶段扩展方法_初始化,第1张


码到三十五 :

个人主页


心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 !




目录

  • 1️⃣Bean的生命周期流程
  • 1.1 BeanDefinition的解析和注册
  • 1.2 Bean的实例化
  • 1.3 属性填充
  • 1.4 Aware回调
  • 1.5 初始化前后处理
  • 1.6 初始化
  • 1.7 销毁前后处理
  • 2️⃣扩展接口介绍
  • 2.1 BeanDefinition的解析和注册
  • 2.2 Bean的实例化
  • InstantiationAwareBeanPostProcessor
  • SmartInstantiationAwareBeanPostProcessor
  • 2.3 属性填充
  • BeanPostProcessor
  • InstantiationAwareBeanPostProcessor
  • 2.4 Aware回调
  • Aware接口的扩展类
  • 2.5 初始化前后处理
  • 2.6 初始化
  • InitializingBean
  • init-method属性
  • 2.7 销毁前后处理
  • DestructionAwareBeanPostProcessor


1️⃣Bean的生命周期流程

在Spring5的源码中,Bean的生命周期主要分为以下几个阶段:

1.1 BeanDefinition的解析和注册

这个阶段可以干预的接口包括BeanDefinitionRegistryPostProcessor。

1.2 Bean的实例化

这个阶段可以干预的接口包括InstantiationAwareBeanPostProcessor、SmartInstantiationAwareBeanPostProcessor。

1.3 属性填充

这个阶段可以干预的接口包括BeanPostProcessor、InstantiationAwareBeanPostProcessor。

1.4 Aware回调

这个阶段可以干预的接口包括Aware接口的扩展类,例如ApplicationContextAware、BeanFactoryAware等。

1.5 初始化前后处理

这个阶段可以干预的接口包括BeanPostProcessor、MergedBeanDefinitionPostProcessor。

1.6 初始化

这个阶段可以干预的接口包括InitializingBean、init-method属性。

1.7 销毁前后处理

这个阶段可以干预的接口包括DestructionAwareBeanPostProcessor。

2️⃣扩展接口介绍

下面分别对每个阶段可干预的扩展接口进行详细说明

2.1 BeanDefinition的解析和注册

BeanDefinitionRegistryPostProcessor这个接口的作用是在BeanDefinition被解析和注册之后,在Bean实例化之前修改BeanDefinition的属性。

该接口有一个方法叫做postProcessBeanDefinitionRegistry,会在BeanDefinition被解析之后、实例化之前被调用。通过该方法,开发者可以向Spring容器中动态注册新的bean定义。

2.2 Bean的实例化

InstantiationAwareBeanPostProcessor

InstantiationAwareBeanPostProcessor是BeanPostProcessor的子接口,它会在Bean的实例化之前和之后被调用。开发者可以通过实现该接口提供自己的逻辑,在实例化Bean的过程中进行自定义操作。
该接口共有四个方法:postProcessBeforeInstantiation、postProcessAfterInstantiation、postProcessPropertyValues和postProcessBeforeInitialization。

SmartInstantiationAwareBeanPostProcessor

这个接口继承自InstantiationAwareBeanPostProcessor,它新增了一个方法determineCandidateConstructors,用于手动选择Bean的构造器,以解决自动装配无法完成的情况。

2.3 属性填充

BeanPostProcessor

这个接口的作用是在Bean属性注入之前和之后对Bean进行自定义处理。开发者可以实现该接口为Bean提供定制化支持。
该接口共有两个方法:postProcessBeforeInitialization和postProcessAfterInitialization。

InstantiationAwareBeanPostProcessor

在实例化Bean的过程中,还可以通过实现InstantiationAwareBeanPostProcessor接口来对Bean的属性进行自定义处理。
该接口有三个方法:postProcessBeforeInstantiation、postProcessPropertyValues和postProcessAfterInitialization。

2.4 Aware回调

Aware接口的扩展类

Spring的容器中有很多组件都提供了Aware接口,通过实现这些Aware接口的扩展类,可以向这些组件注入一些Spring容器中的组件,以实现更灵活的定制化。

2.5 初始化前后处理

BeanPostProcessor
BeanPostProcessor可以在Bean的初始化之前和之后对Bean进行自定义处理。该接口共有两个方法:postProcessBeforeInitialization和postProcessAfterInitialization。

MergedBeanDefinitionPostProcessor
该接口继承了BeanPostProcessor接口,并新增了一个方法postProcessMergedBeanDefinition,用于修改BeanDefinition的属性。

2.6 初始化

InitializingBean

如果某个Bean实现了InitializingBean接口,那么它的afterPropertiesSet()方法会在Bean的属性注入完成后被自动调用。开发者可以在该方法中执行一些初始化操作。

init-method属性

如果某个Bean的配置文件中指定了init-method属性,那么Spring容器会在Bean的属性注入完成后,手动调用该方法进行Bean的初始化。

2.7 销毁前后处理

DestructionAwareBeanPostProcessor

这个接口继承自BeanPostProcessor接口,新增了两个方法postProcessBeforeDestruction和requiresDestruction,用于在Bean销毁之前和之后进行自定义处理。



https://www.xamrdz.com/backend/32v1964032.html

相关文章: