Я использую его сегодня для кэширования объектов между этапами, чтобы мне не нужно было создавать всю работу за один шаг. Сначала, поскольку мои Шаги не были аннотированы какой-либо областью действия (хотя трудно понять, что они неявно означают @JobScope
), я столкнулся с некоторыми грубыми проблемами модульного тестирования, утверждая:
Scope 'job 'не активен для текущего потока; рассмотрите возможность определения прокси-объекта с областью действия для этого компонента, если вы намереваетесь ссылаться на него из синглтона; Вложенное исключение: java .lang.IllegalStateException: нет доступного держателя контекста для области действия
Я прочитал (в оставленном потоке Gitter (который был очень информативным)), что это может быть неправильным использовать случай для @JobScope. На самом деле, я обеспокоен тем, что объем работ как-то зависит от потока.
Это приводит меня к вопросу о том, какова цель @JobScope
, если я действительно неправильно ее использую? И если я неправильно его использую, каков правильный способ обмена данными между шагами в одном и том же задании без записи в таблицу / временный файл базы данных только для того, чтобы развернуться и прочитать ее в начале следующего шага?
Как примечание: (и Spring Batch ничем не отличается от других платформ в этом отношении) эти вопросы проистекают из имеющихся примеров, которые слишком просты c, чтобы иметь большое значение для реального использования.