关于spring中beanPostProcessor调用的地方记录

beanPostProcessor在spring中是非常重要的存在,是spring给程序员扩展spring的方法,看源码的时候确实使用到的地方比较多,所以自己记录一下。

  1. 在循环依赖中,从earlySingletonFactoryBean中获取objectFactory时,在getObject之后会调用一把BeanPostProcessorAfterInstantiation

  2. 如果从bean缓存和提早暴露的缓存中没有找到bean,那么就要进行bean的创建了,在创建之前可以调用beanPostProcessor获取一个bean,并且短路掉bean的创建过程。 AOP就是在这里做的,可能通过jdk或者cjlib代理创建了一个代理类出来,这里调用了beanPostProcessor的postProcessorBeforeInstantiation和postProcessorAfterInstantiation方法,因为spring规定必须要走后置处理器,又因为他这个是短路操作,不走没机会走了,所以肯定是要走的

  3. 在创建完了bean实例(注意是实例,不是bean)之后,进行属性填充的时候,在把属性放到propertyValues之前,会调一把BeanPostProcessor

  4. 在把属性放到propertyValues之后,会调一把beanPostProcessor的方法,例如属性是否必需的验证就在这里做的

  5. 完成属性填充之后,在进行init-method之前会调一把beanPostProcessor的postProcessorBeforeInstantiation

  6. 在进行init-method之后会调一把beanPostProcessor的postProcessorAfterInstantiation

我只在源码里找到了一下六个地方,但是应该不止有六个,如果有大佬知道,欢迎补充。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容