Я реализовал ImportBeanDefinitionRegistrar для создания определений бина из внешнего источника. Это должен быть регистратор, так как я не знаю заранее, сколько определений bean-компонентов будет создано.
Когда я использую регистратор в своем классе Application, как это:
@SpringBootApplication
@Import(GenesysRegistrar.class)
public class IntegrationServer {
...
}
все работает нормально .
Я хотел сделать автоматы импорта c для каждого приложения, использующего JAR, который содержит регистратор, поэтому я создал следующий класс:
@Configuration
@Import(GenesysRegistrar.class)
public class GenesysAutoConfiguration {
/**/
}
и зарегистрировал его в META- INF / spring.factories под ключом org.springframework.boot.autoconfigure.EnableAutoConfiguration
.
Сейчас автоконфигурация работает, но я получаю следующие сообщения в журнале:
Bean 'xxx' of type [XXX] is not eligible for getting processed by all BeanPostProcessors
В чем разница между импортом реестра из приложения класс а из автоконфигурации класс? Я обнаружил, что ПОСЛЕ моих bean-компонентов создаются следующие постпроцессоры:
methodValidationPostProcessor
persistenceExceptionTranslationPostProcessor
webServerFactoryCustomizerBeanPostProcessor
errorPageRegistrarBeanPostProcessor
Я пытался добавить @AutoConfigureOrder(Integer.MAX_VALUE)
в мой класс автоконфигурации, но это ничего не меняет.
Любые идеи, как я могу исправить порядок, чтобы бины из определений, созданных моим регистратором, обрабатывались после всех постпроцессоров? Почему Spring создает их раньше всех постпроцессоров? Любая, почему проблема не возникает при использовании @Import в классе приложения?