我的春季应用程序中有几个已配置的bean。所有的豆子都能正常工作并发挥作用。
问题是,我实现了一个BeanPostProcessor
,并注意到某些bean并未调用它(postProcessAfterInitialization
或postProcessBeforeInitialization
都没有)。可能是什么原因 ?
最佳答案
我不知道它是否相关,但是参考手册说:
BeanPostProcessors和AOP自动代理
实现BeanPostProcessor接口的类是特殊的,
因此容器对它们的处理方式有所不同。所有
BeanPostProcessors及其直接引用的bean将是
在启动时实例化,作为特殊启动阶段的一部分
ApplicationContext,那么所有这些BeanPostProcessor都将是
以排序方式注册-并应用于所有其他bean。
由于AOP自动代理是作为BeanPostProcessor本身实现的,
没有BeanPostProcessor或直接引用的Bean都符合条件
自动代理(因此不会“编织”各个方面。
对于任何此类bean,您应该看到一条信息日志消息:“ Bean'foo'是
不适合所有BeanPostProcessor处理(对于
例如:不符合自动代理资格”。
因此,也许您的豆子正在被代理。