BeanPostProcess

本文详细介绍了Spring框架中Bean生命周期的关键接口:BeanPostProcessor的postProcessBeforeInitialization和postProcessAfterInitialization方法,这两个方法分别在bean初始化前和后进行处理。接着讨论了MergedBeanDefinitionPostProcessor的postProcessBeforeInstantiation和postProcessAfterInstantiation,这两个方法分别在bean实例化前和后发挥作用。最后,我们探讨了InstantiationAwareBeanPostProcessor接口,它提供更细粒度的控制,允许在bean实例化过程中进行干预。这些接口对于理解和定制Spring bean的生命周期至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、BeanPostProcessor

1.1 postProcessBeforeInitialization

在任何 bean 初始化回调(如 InitializingBean 的afterPropertiesSet或自定义初始化方法)之前,
将此BeanPostProcessor应用于给定的新 bean 实例。 bean 已经被填充了属性值。 返回的 bean 实例
可能是原始实例的包装器。
@Nullable
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
	return bean;
}

1.2 postProcessAfterInitialization

在任何 bean 初始化回调(如 InitializingBean 的afterPropertiesSet或自定义初始化方法)之后,
将此BeanPostProcessor应用于给定的新 bean 实例。 bean 已经被填充了属性值。 返回的 bean 实例
可能是原始实例的包装器。
@Nullable
default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
	return bean;
}

二、MergedBeanDefinitionPostProcessor

2.1 postProcessBeforeInstantiation

在目标 bean 被实例化之前应用这个 BeanPostProcessor。 返回的 bean 对象可能是一个代理来代替目标 bean,
有效地抑制目标 bean 的默认实例化。
@Nullable
default Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {
	return null;
}

2.2 postProcessAfterInstantiation

在 bean 被实例化之后,通过构造函数或工厂方法,但在 Spring 属性填充(从显式属性或自动装配)发生之前执行操作。
default boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {
	return true;
}

三、InstantiationAwareBeanPostProcessor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值