今天有读者朋友反馈在调试本书15章的源码时出现“BeanPostProcessorChecker:xxx is not eligible for getting processed by all BeanPostProcessors”的INFO级别的提示,该读者想知道该错误出现的原因。相关提示,如下图所示。
提示的解答:
该信息提示的意思是:BeanPostProcessorChecker检查到xxx不适合所有的BeanPostProcessor来处理。即,存在出现“自动注入”不合适或无效的信息。
是否为错误:
对于INFO级别的输出信息来说,一般情况下并不算错误,WARN级别的也不算错误,这其实只是警告。
出现原因:
虽然不是错误,但是我们需要找到原因。
1. 什么是BeanPostProcessor
在了解出现提示的原因之前,我们先来了解什么是BeanPostProcessor。
BeanPostProcessor是Spring的Bean工厂中的钩子(Hook),允许Spring框架在新创建Bean实例时对其进行定制化修改。它本身也是一个Bean,在通常情况下,其实例化顺序要优先于普通的Bean。因为有时BeanPostProcessor也会依赖一些Bean,所以,会存在一些普通Bean的实例化早于BeanPos