Весенняя партия - Архитектура
Ниже приводится схематическое представление архитектуры Spring Batch. Как показано на рисунке, архитектура содержит три основных компонента, а именно:Application, Batch Core, и Batch Infrastructure.
Application - Этот компонент содержит все задания и код, который мы пишем с использованием среды Spring Batch.
Batch Core - Этот компонент содержит все классы API, необходимые для управления и запуска пакетного задания.
Batch Infrastructure - Этот компонент содержит средства чтения, записи и службы, используемые как основными компонентами приложения, так и пакетной службы.
Компоненты 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. В этих тегах мы определяем определение и порядок шагов.
Restartable - Как правило, когда задание выполняется, и мы пытаемся запустить его снова, это считается restartи он будет запущен снова. Чтобы этого не произошло, нужно установитьrestartable ценность для false как показано ниже.
<job id = "jobid" restartable = "false" >
</job>
Шаг
А step является независимой частью задания, которая содержит необходимую информацию для определения и выполнения задания (его части).
Как указано на схеме, каждый шаг состоит из ItemReader, ItemProcessor (необязательно) и ItemWriter. A job may contain one or more steps.
Читатели, писатели и процессоры
An item reader считывает данные в приложение Spring Batch из определенного источника, тогда как item writer записывает данные из приложения Spring Batch в определенное место назначения.
An Item processor- это класс, содержащий код обработки, который обрабатывает данные, считанные в пакете Spring. Если в приложении написано"n" записей, то код в процессоре будет выполняться для каждой записи.
Когда не указаны читатель и писатель, taskletдействует как процессор для SpringBatch. Он обрабатывает только одну задачу. Например, если мы пишем задание с простым шагом в нем, где мы читаем данные из базы данных MySQL, обрабатываем их и записываем в файл (плоский), тогда наш шаг использует -
А reader который читает из базы данных MySQL.
А writer который записывает в плоский файл.
А custom processor который обрабатывает данные по нашему желанию.
<job id = "helloWorldJob">
<step id = "step1">
<tasklet>
<chunk reader = "mysqlReader" writer = "fileWriter"
processor = "CustomitemProcessor" ></chunk>
</tasklet>
</step>
</ job>
Spring Batch предоставляет длинный список readers и writers. Используя эти предопределенные классы, мы можем определить для них bean-компоненты. Мы обсудимreaders и writers более подробно в следующих главах.
JobRepository
Репозиторий заданий в Spring Batch обеспечивает операции создания, получения, обновления и удаления (CRUD) для реализаций JobLauncher, Job и Step. Мы определим репозиторий заданий в файле XML, как показано ниже.
<job-repository id = "jobRepository"/>
В добавление к id, доступны дополнительные параметры (необязательно). Ниже приводится конфигурация репозитория заданий со всеми параметрами и их значениями по умолчанию.
<job-repository id = "jobRepository"
data-source = "dataSource"
transaction-manager = "transactionManager"
isolation-level-for-create = "SERIALIZABLE"
table-prefix = "BATCH_"
max-varchar-length = "1000"/>
In-Memory Repository - В случае, если вы не хотите сохранять объекты домена Spring Batch в базе данных, вы можете настроить версию jobRepository в памяти, как показано ниже.
<bean id = "jobRepository"
class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean ">
<property name = "transactionManager" ref = "transactionManager"/>
</bean>
JobLauncher
JobLauncher - это интерфейс, который запускает задание Spring Batch с given set of parameters. SampleJoblauncher это класс, который реализует JobLauncherинтерфейс. Ниже приведена конфигурация JobLauncher.
<bean id = "jobLauncher"
class = "org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name = "jobRepository" ref = "jobRepository" />
</bean>
JobInstance
А JobInstanceпредставляет собой логический запуск задания; он создается, когда мы запускаем задание. Каждый экземпляр задания отличается именем задания и параметрами, передаваемыми ему во время выполнения.
Если выполнение JobInstance не удается, тот же JobInstance может быть выполнен снова. Следовательно, каждый экземпляр JobInstance может выполнять несколько заданий.
JobExecution и StepExecution
JobExecution и StepExecution - это представление выполнения задания / шага. Они содержат информацию о выполнении задания / шага, такую как время начала (задания / шага), время окончания (задания / шага).