Я разрабатываю систему для работы под WildFly-10, которая состоит из ряда различных компонентов, которые можно включить или отключить с помощью свойства конфигурации с помощью аннотаций @Conditional
. Проблема, которую я обнаружил, заключается в том, что если слишком много классов @Configuration
отключено @Conditional
, то остальные классы @Configuration не улучшаются во время вызова ConfigurationClassPostProcessor.processConfigBeanDefinitions()
. Я использую Spring версии 4.3.10.RELEASE, чтобы соответствовать тому, что используется WildFLy-10.0.Final.
Например, в одной настройке во время вызова processConfigBeanDefinitions()
, beanDefinitionMap содержит 62 элемента. После вызова this.reader.loadBeanDefinitions()
, beanDefinitionMap содержит 61 элемент. Это приводит к сбою теста registry.getBeanDefinitionCount() > candidateNames.length
, поэтому вновь созданные классы @Configuration
не улучшаются. Это приводит к дальнейшему NullPointerException
при попытке создания транзакцииAdvisor для класса конфигурации, помеченного @EnableTransactionManagement
, поскольку эта аннотация не была обработана.
Мой обходной путь - создание большего количества bean-компонентов внутри @Configuration
классов, которые всегда загружаются, но это не лучшее решение, если мне придется прибегнуть к созданию фиктивных bean-компонентов. Есть ли другой способ решить эту проблему? Это было исправлено в более поздних версиях Spring?