Я разрабатываю пример приложения, которое Spring Batch с Spring Boot.Мое требование:
У меня есть собственная реализация BasicBatchConfigurer
, чтобы я мог настроить AsyncTaskExecutor и свой собственный источник данных, поскольку я использую SAP HANA в качестве БД, для которой тип базы данных не поддерживается.
Я хочу использовать @EnableBatchProcessing(modular=true)
, чтобы я мог зарегистрировать несколько заданий и запустить их с отдельным дочерним контекстом
Я добавил все необходимыеконфигурации.Без установки modular = true, задание запускается и работает как положено.Он инициализирует bean-компоненты, определенные в моей реализации BasicBatchConfigurer.
Однако, как только модуль modular = true установлен, bean-компоненты из моей реализации не инициализируются.
Код размещен здесь: https://github.com/VKJEY/spring-framework-evaluation
Я продолжил отладку:
- Похоже, когда мы устанавливаем modular = true,
BatchConfigurationSelector
использует ModularBatchConfiguration - В ModularBatchConfiguration есть поле
Collection<BatchConfigurer> configurers
.Это было помечено как @autowired
. - Я предполагаю, что это поле автоматически инициализируется, если я предоставил реализацию
BatchConfigurer
, как это было упомянуто в комментариях к классу ModularBatchConfiguration
, а также - Однако во время отладки я понял, что указанное выше поле все еще равно нулю, поскольку оно загружает
DefaultBatchConfigurer
и следует потоку по умолчанию.
Мой вопрос: почему это поле configurers
не инициализируется в ModularBatchConfiguration
?Я что-то упустил?
Я использую Spring boot 2.1.2.