Spring Batch-아키텍처

다음은 Spring Batch 아키텍처의 다이어그램 표현입니다. 그림에 표시된 것처럼 아키텍처에는 세 가지 주요 구성 요소가 있습니다.Application, Batch Core, 및 Batch Infrastructure.

Application −이 컴포넌트는 Spring Batch 프레임 워크를 사용하여 작성한 모든 작업과 코드를 포함합니다.

Batch Core −이 구성 요소에는 배치 작업을 제어하고 시작하는 데 필요한 모든 API 클래스가 포함되어 있습니다.

Batch Infrastructure −이 구성 요소에는 애플리케이션과 Batch 핵심 구성 요소 모두에서 사용하는 리더, 작성자 및 서비스가 포함됩니다.

Spring Batch의 구성 요소

다음 그림은 Spring Batch의 다양한 구성 요소와 서로 연결되는 방식을 보여줍니다.

Spring Batch 애플리케이션에서 작업은 실행될 배치 프로세스입니다. 중단없이 처음부터 끝까지 실행됩니다. 이 작업은 단계로 더 나뉩니다 (또는 작업에 단계가 포함됨).

XML 파일 또는 Java 클래스를 사용하여 Spring Batch에서 작업을 구성합니다. 다음은 Spring Batch에서 Job의 XML 구성입니다.

<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.

독자, 작가 및 프로세서

item reader 특정 소스에서 Spring Batch 애플리케이션으로 데이터를 읽는 반면 item writer Spring Batch 애플리케이션의 데이터를 특정 대상에 씁니다.

Item processor스프링 배치로 읽은 데이터를 처리하는 처리 코드를 포함하는 클래스입니다. 응용 프로그램이 읽는 경우"n" 그러면 프로세서의 코드가 각 레코드에서 실행됩니다.

독자와 작가가 주어지지 않으면 taskletSpringBatch의 프로세서 역할을합니다. 단일 작업 만 처리합니다. 예를 들어, 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는 긴 목록을 제공합니다. readerswriters. 이러한 사전 정의 된 클래스를 사용하여 이에 대한 빈을 정의 할 수 있습니다. 우리는 논의 할 것이다readerswriters 다음 장에서 자세히 설명합니다.

JobRepository

Spring Batch의 Job 저장소는 JobLauncher, Job 및 Step 구현을위한 CRUD (Create, Retrieve, Update 및 Delete) 작업을 제공합니다. 아래와 같이 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은 작업 / 단계의 실행을 나타냅니다. 여기에는 시작 시간 (작업 / 단계), 종료 시간 (작업 / 단계)과 같은 작업 / 단계의 실행 정보가 포함됩니다.