在我的公司,我们正在开发一个面向方面的跟踪拦截器,类似于DebugInterceptor
. 我们正在配置 aCustomizableTraceInterceptor
并使用 aBeanNameAutoProxyCreator
来为 AOP 自动代理 bean。
我们面临的问题是,当我们BeanNameAutoProxyCreator
在配置中引入时:
@配置 @Import(BConfig.class) @EnableAspectJAutoProxy 公共类 AConfig { @豆 公共静态 BeanNameAutoProxyCreator beanNameAutoProxyCreator() { BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator(); beanNameAutoProxyCreator.setInterceptorNames(new String[] {DEBUG_INTERCEPTOR_NAME}); beanNameAutoProxyCreator.setBeanNames(new String[] {BEANS_NAMES_EXPRESSION}); 返回 beanNameAutoProxyCreator; } }
我们得到一个 org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [X],其中 X 是一个 Resteasy Proxy。这个 Resteasy 代理在BConfig
.
现在,如果我将 Resteasy Proxy bean 配置移到 AConfig,这个问题就解决了,也@DependsOn
解决了这个问题。
我的问题是 3:Spring 何时能够解决 bean 之间的依赖关系?为什么使用 BeanNameAutoProxyCreator 会改变这种行为?解决此问题的推荐方法是什么(BeanPostProcessor、@DependsOn 等)。