Конфигурация Spring зависит от динамических значений времени выполнения
У меня есть весеннее загрузочное приложение, которое обрабатывает xml, отправленный приложению. XML является динамическим в том смысле, что каждая полезная нагрузка может быть разных типов. В зависимости от того, какой тип xml необходимо обработать, приложение меняет поведение обработки.
Наш проект страдает от плохой практики автоматического подключения всего, что в нашем проекте практически нулевой конфигурации. Таким образом, у нас есть много классов компонентов Spring, которые должны выполнять "настройки как вещи" (такие как if/else проверяет динамические значения XML). Это также делает модульное тестирование практически невозможным, поскольку для тестирования компонента вы зависите от того, что подключено автоматически. Почти каждый "джунтовый тест", который у нас есть, является интеграционным тестом. Приложение не масштабируется и не протестировано с этими ограничениями.
Я хочу очистить наше приложение, чтобы использовать конфигурацию пружинного конструктора. Однако некоторые конструкторы будут значениями из самого xml (которые являются динамическими и будут меняться в зависимости от обрабатываемого XML-документа). Я обеспокоен тем, что бобы весной являются синглетонами, и любая конфигурация обрабатывающих компонентов, загруженная для первого полученного XML, будет использоваться для всех будущих XML (это будет логической ошибкой в конфигурации).
Как правильно определить компоненты, которые зависят от динамических значений времени выполнения?