В моей компании мы работаем над аспектно-ориентированным перехватчиком трассировки, аналогичным DebugInterceptor
. Мы настраиваем CustomizableTraceInterceptor
и используем BeanNameAutoProxyCreator
для автопрокси-бонов для АОП.Неявная зависимость между 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 - прокси-сервер. Этот прокси-сервер Restaasy объявлен в BConfig
.
Теперь, если я перейду на конфигурацию прокси-сервера Resteasy Proxy до AConfig, эта проблема будет решена, и @DependsOn
решает проблему.
Мои вопросы: 3: когда Spring способен разрешать зависимости между фасолью? Почему использование BeanNameAutoProxyCreator меняет это поведение? Каков рекомендуемый способ решения этой проблемы (BeanPostProcessor, @DependsOn и т. Д.).