BeanPostProcessor 和 InstantiationAwareBeanPostProcessor

本文介绍了Spring框架中BeanPostProcessor接口及其子接口InstantiationAwareBeanPostProcessor的作用与实现方法。详细解释了如何通过这些接口在bean的生命周期的不同阶段进行干预,包括初始化前后及实例化过程。

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

1.BeanPostProcessor 是一个接口 ,需要在 spring环境下才能使用 ,spring boot项目也是可以的 。 插一嘴,实现它的类需要 被spring容器扫描才能生效,比如加个@component 。
2.实现它以后,在jdk8时,可以选择实现两个接口,这两个接口一个是在类的生命周期中的初始化前,一个是在初始化后执行

postProcessBeforeInitialization(Object bean, String beanName)
postProcessAfterInitialization(Object bean, String beanName)

3.这两接口与aop很像,甚至在postProcessAfterInitialization后置处理器里面可以改变返回的bean,对bean做属性赋值或者欢类型都可以。
bean就是产生的bean对象,beanName就是这个bean的名字

  1. 在初始化前,还有个步骤叫实例化,它是通过反射构造方法来得到一个实例化的对象。而 BeanPostProcessor 同样是可以对它进行操作的 。
    我们需要实现 InstantiationAwareBeanPostProcessor 接口,这个接口是继承了 BeanPostProcessor 的 。
  2. 实现 InstantiationAwareBeanPostProcessor 接口后可实现两个方法: Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName)和
    boolean postProcessAfterInstantiation(Object bean, String beanName) 。

实例化前的方法大致与初始化前类似,而实例化后有所不同。
postProcessAfterInstantiation 的返回值代表后续 还走不走spring 的后续逻辑(属性填充,初始化) false代表不走 ,true 代表继续走

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值