BeanPostProcessor 和 InstantiationAwareBeanPostProcessor

BeanPostProcessor 和 InstantiationAwareBeanPostProcessor,第1张

BeanPostProcessor 和 InstantiationAwareBeanPostProcessor

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的名字

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5710007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存