Пружинная документация (стр. 46, раздел: 5.1.7) гласит:
По умолчанию, независимо от повторных попыток или пропуска, любые исключения, выданные из ItemWriter, вызовут откат транзакции, контролируемой Step. Если пропуск настроен, как описано выше, исключения, выданные из ItemReader, не вызовут откат.
Мой интервал коммита установлен на 10. Так что я понимаю, что вышеизложенный абзац таков: если они ошибочны при чтении 7-й записи из фрагмента из 10, элемент будет пропущен, а правильные 9 записей будут отправлены вперед itemReader ,
Однако, если 7-я запись содержит ошибку во время записи - ни одна из 10 записей не будет записана, и произойдет откат.
Однако, когда я включаю ошибку, выданную в моем skipPolicy, itemWriter записывает оставшиеся 9 записей в базу данных, пропуская ошибочную. Это противоречит тому, что упомянуто выше.
Может ли кто-нибудь объяснить, пожалуйста, понятие "пропустить во время записи элемента".
Кроме того, даже если выдается одна ошибка, я получаю следующее:
SkipCount как -1 дважды, затем как 0 один раз, и снова -1 один раз в моем методе shouldSkip (Object, Throwable). - Я не понимаю этого поведения.
Также количество откатов равно 2 - что это значит? почему это 2?
@ michael Можно ли было бы объяснить поведение, используя некоторый сценарий !!
как «Я читаю 20 записей из файла и записываю в базу данных после некоторой обработки. У меня есть политика пропуска для некоторого исключения. Что произойдет, если исключение возникнет во время - чтение, обработка, запись - как фрагменты будут зафиксированы, как работает повтор по умолчанию, как будет обновляться счет и т. д. и т. д. ... "
Это действительно будет для меня большой помощью, так как я все еще путаюсь с поведением ..