Ниже приводится схематическое представление архитектуры Spring Batch. Как показано на рисунке, архитектура содержит три основных компонента, а именно: приложение, пакетное ядро и пакетная инфраструктура .
Приложение. Этот компонент содержит все задания и код, который мы пишем с использованием среды Spring Batch.
Batch Core — этот компонент содержит все классы API, необходимые для управления и запуска Batch Job.
Пакетная инфраструктура. Этот компонент содержит устройства чтения, записи и службы, используемые как базовыми компонентами приложения, так и компонентами пакета.
Компоненты Spring Batch
На следующем рисунке показаны различные компоненты Spring Batch и их связь друг с другом.
работа
В приложении Spring Batch задание — это пакетный процесс, который должен быть выполнен. Он работает от начала до конца без перерыва. Это задание делится на этапы (или задание содержит этапы).
Мы настроим работу в Spring Batch, используя файл XML или класс Java. Ниже приведена XML-конфигурация задания в Spring Batch.
<job id = "jobid"> <step id = "step1" next = "step2"/> <step id = "step2" next = "step3"/> <step id = "step3"/> </job>
Пакетное задание настраивается в тегах <job> </ job>. У него есть атрибут с именем id . В рамках этих тегов мы определяем определение и порядок шагов.
Перезапускаемый — обычно, когда задание выполняется и мы пытаемся запустить его снова, это считается перезапуском, и оно будет запущено снова. Чтобы избежать этого, вам нужно установить для перезапускаемого значения значение false, как показано ниже.
<job id = "jobid" restartable = "false" > </job>
шаг
Шаг — это независимая часть задания, которая содержит необходимую информацию для определения и выполнения задания (его части).
Как указано на диаграмме, каждый шаг состоит из ItemReader, ItemProcessor (необязательно) и ItemWriter. Задание может содержать один или несколько шагов .
Читатели, писатели и процессоры
Средство чтения элементов считывает данные в приложение Spring Batch из определенного источника, тогда как средство записи элементов записывает данные из приложения Spring Batch в конкретное место назначения.
Процессор Item — это класс, который содержит код обработки, который обрабатывает данные, считанные в пакет пружины. Если приложение читает «n» записей, то код в процессоре будет выполняться для каждой записи.
Когда нет читателя и писателя, тасклет действует как процессор для SpringBatch. Он обрабатывает только одну задачу. Например, если мы пишем задание с простым шагом, в котором мы читаем данные из базы данных MySQL, обрабатываем их и записываем в файл (плоский), то наш шаг использует —
-
Читатель, который читает из базы данных MySQL.
-
Автор, который пишет в плоский файл.
-
Пользовательский процессор, который обрабатывает данные по нашему желанию.
Читатель, который читает из базы данных MySQL.
Автор, который пишет в плоский файл.
Пользовательский процессор, который обрабатывает данные по нашему желанию.
<job id = "helloWorldJob"> <step id = "step1"> <tasklet> <chunk reader = "mysqlReader" writer = "fileWriter" processor = "CustomitemProcessor" ></chunk> </tasklet> </step> </ job>
Spring Batch предоставляет длинный список читателей и писателей . Используя эти предопределенные классы, мы можем определить бины для них. Мы обсудим читателей и писателей более подробно в следующих главах.
JobRepository
Репозиторий Job в Spring Batch предоставляет операции Create, Retrieve, Update и Delete (CRUD) для реализаций JobLauncher, Job и Step. Мы определим репозиторий заданий в файле XML, как показано ниже.
<job-repository id = "jobRepository"/>
В дополнение к идентификатору , есть еще несколько опций (необязательно). Ниже приведена конфигурация репозитория заданий со всеми параметрами и их значениями по умолчанию.
<job-repository id = "jobRepository" data-source = "dataSource" transaction-manager = "transactionManager" isolation-level-for-create = "SERIALIZABLE" table-prefix = "BATCH_" max-varchar-length = "1000"/>
Репозиторий в памяти. Если вы не хотите сохранять доменные объекты Spring Batch в базе данных, вы можете настроить версию jobRepository в памяти, как показано ниже.
<bean id = "jobRepository" class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean "> <property name = "transactionManager" ref = "transactionManager"/> </bean>
JobLauncher
JobLauncher — это интерфейс, который запускает задание Spring Batch с заданным набором параметров . SampleJoblauncher — это класс, который реализует интерфейс JobLauncher . Ниже приведена конфигурация JobLauncher.
<bean id = "jobLauncher" class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name = "jobRepository" ref = "jobRepository" /> </bean>
JobInstance
JobIinstance представляет логический прогон задания; он создается, когда мы запускаем работу. Каждый экземпляр задания отличается по имени задания и параметрам, переданным ему во время работы.
Если выполнение JobInstance завершается неудачно, тот же JobInstance может быть выполнен снова. Следовательно, каждый JobInstance может иметь несколько выполнений работы.
JobExecution и StepExecution
JobExecution и StepExecution представляют представление выполнения задания / шага. Они содержат информацию о выполнении задания / шага, такую как время начала (задания / шага), время окончания (задания / шага).