Весенняя партия - Архитектура

Ниже приводится схематическое представление архитектуры 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 - это представление выполнения задания / шага. Они содержат информацию о выполнении задания / шага, такую ​​как время начала (задания / шага), время окончания (задания / шага).