在我的公司,我们正在研究面向方面的跟踪拦截器,类似于DebugInterceptor
。我们正在配置一个CustomizableTraceInterceptor
并使用BeanNameAutoProxyCreator
为AOP自动代理bean。BeanNameAutoProxyCreator和导入配置之间的隐式依赖关系
我们面临的问题是,当我们在配置介绍BeanNameAutoProxyCreator
:
@Configuration @Import(BConfig.class) @EnableAspectJAutoProxy public class AConfig { @Bean public static BeanNameAutoProxyCreator beanNameAutoProxyCreator() { BeanNameAutoProxyCreator beanNameAutoProxyCreator = new BeanNameAutoProxyCreator(); beanNameAutoProxyCreator.setInterceptorNames(new String[] {DEBUG_INTERCEPTOR_NAME}); beanNameAutoProxyCreator.setBeanNames(new String[] {BEANS_NAMES_EXPRESSION}); return beanNameAutoProxyCreator; } }
我们得到一个org.springframework.beans.factory.NoSuchBeanDefinitionException:无型的排位豆[X] ,其中X是Resteasy代理。此Resteasy代理在BConfig
中声明。
现在,如果我将Resteasy Proxy Bean配置移至AConfig,此问题就解决了,@DependsOn
也解决了这个问题。
我的问题是3:何时Spring能够解决bean之间的依赖关系?为什么使用BeanNameAutoProxyCreator改变这种行为?什么是解决这个问题的推荐方法(BeanPostProcessor,@DependsOn等)。