2

我的 Spring 应用程序中有几个已配置的 bean。所有的豆子都按照它应该的方式工作并完成他们的工作。

问题是,我实现了 aBeanPostProcessor并注意到它没有被某些 bean 调用,(也postProcessAfterInitialization没有postProcessBeforeInitialization)。可能是什么原因 ?

4

1 回答 1

1

我不知道它是否相关,但参考手册说:

BeanPostProcessors 和 AOP 自动代理

实现 BeanPostProcessor 接口的类是特殊的,因此容器对它们的处理方式不同。所有 BeanPostProcessor 及其直接引用的 bean 将在启动时实例化,作为 ApplicationContext 特殊启动阶段的一部分,然后所有这些 BeanPostProcessor 将以排序方式注册 - 并应用于所有其他 bean。由于 AOP 自动代理是作为 BeanPostProcessor 本身实现的,因此没有 BeanPostProcessor 或直接引用的 bean 有资格进行自动代理(因此不会将方面“编织”到其中。

对于任何此类 bean,您应该看到一条信息日志消息:“Bean 'foo' 不符合所有 BeanPostProcessors 的处理条件(例如:不符合自动代理条件)”。

所以,也许你的 bean 正在被代理。

于 2012-05-28T02:22:27.283 回答