Как я могу начать работу с Spring Batch?

Я пытаюсь изучить Spring Batch, но руководство по началу работы очень запутанно. Комментарии как

Вы можете получить довольно хорошее представление о том, как настроить задание, изучив модульные тесты в пакете org.springframework.batch.sample (в src/main/java) и конфигурацию в src/main/resources/jobs.

не совсем помогают. Также я нахожу пример проекта очень сложным (17 непустых пространств имен со 109 классами)! Есть ли более простое место для начала работы с Spring Batch?


person C. Ross    schedule 22.10.2009    source источник
comment
Я должен согласиться. Изучаю структуру сейчас, и образцы не совсем удобны для новичков :)   -  person James P.    schedule 07.06.2011
comment
Я все еще согласен с автором этого вопроса   -  person gstackoverflow    schedule 19.08.2019


Ответы (8)


Несколько указателей:

person Pascal Thivent    schedule 22.10.2009
comment
Чтобы добавить к этому, если кто-то ищет способ запустить Spring Batch с помощью Quartz (планировщик), найдите кварц-job-launcher-context.xml в src/main/resources примеров. - person James P.; 07.06.2011
comment
Похоже, что первые 3 ссылки устарели, а 2 последние ссылки ошибочны. И, кажется, нет никакой полезной книги по этому поводу... Любые предложения, ребята? - person wakandan; 27.07.2011
comment
Просто чтобы уточнить комментарий @James ... образцы - это те, что в весеннем пакетном распространении. - person Dr. belisarius; 30.08.2011
comment
Да, не ожидайте, что вы разберетесь с файлами конфигурации за одну ночь :) - person James P.; 31.08.2011
comment
возможно, этот ответ слишком стар. - person cleverpig; 12.12.2012

Я согласен с тем, что руководство пользователя очень запутанно (во всяком случае, по сравнению с руководством пользователя Spring Core). В нем не рассматриваются должным образом некоторые очень важные ошибки, с которыми вы столкнетесь в любом умеренно сложном пакетном сценарии.

Важные вещи, которые вы должны изучить как новый стартер, и определить свои требования:

  • настройка исключений (когда пропустить, когда потерпеть неудачу, когда повторить попытку)
  • использование контекста выполнения для поддержания состояния (например, когда использовать контекст выполнения шага по сравнению с контекстом выполнения задания).
  • общее обслуживание состояния (используйте область шага, особенно для входных параметров)

Однако стоит проявить настойчивость. Пакетное программирование очень отличается от других стилей на стороне сервера и значительно выигрывает от обычного подхода Spring к «абстракции шаблонов».

person Caoilte    schedule 11.12.2009

Прежде чем прыгнуть в фургон Spring Batch, вы можете прочитать, что собственный Клетус SO говорит о его недостатках:

http://www.cforcoding.com/2009/07/spring-batch-or-how-not-to-design-api.html.

Недавно я оценил Spring Batch и быстро отказался от него, как только понял, что он ничего не добавляет к моему проекту, кроме раздувания и накладных расходов. Spring Batch может в конечном итоге стать нормальным продуктом (так же, как EJB сделали это правильно на этот раз), но на данный момент он подозрительно выглядит как решение в поисках проблемы.

person rtperson    schedule 26.10.2009
comment
Я уже прочитал это. Похоже, это будет полезно для того, что я пытаюсь сделать (и по причинам архитектуры мне все равно приходится использовать Spring). Однако меня беспокоит сложность (ужасно сложные файлы конфигурации). Короче говоря, я все еще оцениваю это сам, поэтому и задал вопрос. - person C. Ross; 26.10.2009
comment
@С. Росс. Вполне возможно использовать Spring в сочетании с Quartz (для планирования) и полностью отказаться от Spring Batch. Вы можете использовать шаблон стратегии, чтобы обобщить задания и шаги, и вы можете легко изменить свою собственную сохраняемость, сохраняя состояния транзакций в ваших данных. Это то, что мы в итоге сделали, и это работает нормально. Я просто не вижу, чтобы Spring Bat предлагал что-то ценное, чтобы компенсировать его головную боль. - person rtperson; 27.10.2009
comment
Пакетные системы могут представлять собой гораздо больше, чем просто шаги и задания. Если это все, что вам нужно, то хорошо, но если вам нужны дополнительные функции, такие как повторение и повторная попытка, параллельная обработка и т. Д., Spring Batch может быть хорошим решением. - person Steve; 24.02.2010

Недавно я попробовал Spring Batch. Я скажу, что в своей реализации я использовал репозиторий в памяти (поскольку перезапуски и повторные попытки не были приоритетом в обстоятельствах моего проекта), но я могу оценить то, что Ричард говорит о JobRepository: вам в основном нужно копать глубоко, чтобы найти схема базы данных.

Для Spring Batch 2.1 они предоставляют некоторую документацию по репозиторию: http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html, включая обсуждение того, как поступать с реализациями для конкретных баз данных. DDL для создания таблиц находится в основном JAR-файле Spring Batch:

spring-batch-core-2.1.0.RELEASE.jar:/org/springframework/batch/core/*.sql

Сценарии присутствуют для DB2, Derby, H2, HSQLDB, MySQL, Oracle 10g, PostgreSQL, MS SQL и Sybase.

person WineSoaked    schedule 07.05.2010
comment
Еще одно наблюдение о Spring Batch: я могу оценить отношение людей к API: на первый взгляд он действительно кажется неуклюжим. Но при работе с плоскими ASCII-файлами этого вполне достаточно (и вы будете удивлены, как много устаревшей обработки данных по-прежнему использует плоские файлы фиксированной ширины — черт возьми, у меня иногда болит голова от одного количества используемого COBOL), что Я решил попробовать. Моя последняя мысль заключается в том, что понятие контекстов выполнения Job и Step — это то, что снова и снова сбивало меня с толку в процессе разработки. - person WineSoaked; 08.05.2010
comment
Вы можете отредактировать этот комментарий в своем вопросе. Но то, что вы говорите, имеет смысл. Мне также приходится иметь дело с файлами ASCII, создаваемыми COBOL, поэтому, возможно, я еще раз взгляну на них. У меня все еще есть смутное ощущение, что это перебор. - person C. Ross; 10.05.2010
comment
Да, это был мой первый ответ (и комментарий) на SO, поэтому механика редактирования была мне непонятна (как и сейчас). - person WineSoaked; 10.05.2010
comment
Спасибо @WineSoaked за то, что избавил меня от необходимости копаться в DDL-скриптах :D - person Eran Harel; 16.08.2010

В этом руководстве мы создадим простое приложение Spring Batch, чтобы продемонстрировать, как обрабатывать серию заданий, основной целью которых является импорт списков записей с разделителями-запятыми и записей фиксированной длины. Кроме того, мы добавим веб-интерфейс с использованием Spring MVC, чтобы научить запускать задания вручную и чтобы мы могли визуально проверять импортированные записи. На уровне данных мы будем использовать JPA, Hibernate и MySQL.

  1. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-1.html
  2. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-2.html
  3. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-3.html
  4. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-4.html
person cleverpig    schedule 12.12.2012
comment
В этом руководстве рассматривается Spring Batch 2! Таким образом, вы можете использовать его вместо устаревших учебных пособий по Spring Batch 1. - person Matthias B; 07.01.2013

https://github.com/langmi/spring-batch-examples

Он содержит несколько довольно хороших базовых примеров.

person Vicky    schedule 23.08.2011

Я только начал рассматривать Spring Batch как возможную замену нашей внутренней пакетной среде. На самом деле создание пакетного сервера с возможностью планирования заданий и интерфейсом JMX сверху для предоставления обзора запущенных/ранее запущенных экземпляров заданий заняло чуть больше дня. Однако, как и Caoilte, я нахожу проблемы с документацией. Главный из них, которого нет в документации или javadocs, — это то, какие таблицы требуются для JobRepository. По умолчанию используется JobRepository с сохранением базы данных, что является одним из требований моего нового сервера, но я не могу найти упоминания о необходимых таблицах. Мне приходилось искать в Google все упоминания о них (если они есть в документации, то я с радостью добавлю соль в свой скромный пирог).

Я думаю, что на самом деле создание пакета для запуска в Spring Batch является довольно сложной задачей, учитывая широкий спектр доступных вам параметров конфигурации. Это сила в моих глазах. Он предоставляет возможности для настройки сложных пакетных задач в xml, которые мне еще предстоит найти в любой другой пакетной среде (о которой я знаю). Но если вы действительно не хотите использовать возможности Spring Batch, почему бы просто не создать задание с помощью одного шага тасклета (но тогда вы должны спросить себя, стоит ли это накладных расходов).

person Richard    schedule 24.02.2010
comment
Я отказался от фреймворка из-за ограниченной документации, да и потому, что, честно говоря, это гораздо больше, чем нам было нужно. Удачи. - person C. Ross; 24.02.2010
comment
Глядя на это снова, как они готовятся к выпуску 2.0. - person C. Ross; 12.12.2012

Очень жаль, что вы, ребята, отказались от него, фреймворк действительно отличный. Но если кому-то еще нужен быстрый старт, попробуйте: Spring Batch Quick Старт

/Анатолий

person tolitius    schedule 08.04.2010