Учебники

Spring Batch — базовое применение

В этой главе показано базовое приложение Spring Batch. Он просто выполнит тасклет для отображения сообщения.

Наше приложение Spring Batch содержит следующие файлы —

  • Файл конфигурации — это файл XML, в котором мы определяем задание и этапы задания. (Если приложение также включает в себя читателей и писателей, то конфигурация читателей и писателей также включена в этот файл.)

  • Context.xml — в этом файле мы определим компоненты, такие как репозиторий заданий, средство запуска заданий и менеджер транзакций.

  • Класс тасклетов — в этом классе мы напишем задание обработки кода (в этом случае отображается простое сообщение)

  • Класс запуска — в этом классе мы запустим пакетное приложение, запустив модуль запуска Job.

Файл конфигурации — это файл XML, в котором мы определяем задание и этапы задания. (Если приложение также включает в себя читателей и писателей, то конфигурация читателей и писателей также включена в этот файл.)

Context.xml — в этом файле мы определим компоненты, такие как репозиторий заданий, средство запуска заданий и менеджер транзакций.

Класс тасклетов — в этом классе мы напишем задание обработки кода (в этом случае отображается простое сообщение)

Класс запуска — в этом классе мы запустим пакетное приложение, запустив модуль запуска Job.

jobConfig.xml

Ниже приведен файл конфигурации нашего примера приложения Spring Batch.

<beans xmlns = "http://www.springframework.org/schema/beans" 
   xmlns:batch = "http://www.springframework.org/schema/batch" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://www.springframework.org/schema/batch 
      http://www.springframework.org/schema/batch/spring-batch-2.2.xsd
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd "> 
   <import resource="context.xml" />      
   <!-- Defining a bean --> 
   <bean id = "tasklet" class = "a_sample.MyTasklet" />  
   <!-- Defining a job--> 
   <batch:job id = "helloWorldJob">  
      <!-- Defining a Step --> 
      <batch:step id = "step1"> 
         <tasklet ref = "tasklet"/>   
      </batch:step>    
   </batch:job>  
</beans> 

context.xml

Ниже приводится context.xml нашего приложения Spring Batch.

<beans xmlns = "http://www.springframework.org/schema/beans" 
   xmlns:xsi = http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">  
   
   <bean id = "jobRepository"   
      class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> 
      <property name = "transactionManager" ref = "transactionManager" /> 
   </bean>     
     
   <bean id = "transactionManager" 
      class = "org.springframework.batch.support.transaction.ResourcelessTransactionManager" />  
   <bean id = "jobLauncher" 
      class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
      <property name = "jobRepository" ref = "jobRepository" /> 
   </bean> 
</beans> 

Tasklet.java

Ниже приведен класс Tasklet, который отображает простое сообщение.

import org.springframework.batch.core.StepContribution; 
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;  

public class MyTasklet implements Tasklet { 
   
   @Override 
   public RepeatStatus execute(StepContribution arg0, ChunkContext arg1) throws Exception {  
      System.out.println("Hello This is a sample example of spring batch"); 
      return RepeatStatus.FINISHED; 
   } 
} 

App.java

Ниже приведен код, который запускает пакетный процесс.

import org.springframework.batch.core.Job; 
import org.springframework.batch.core.JobExecution; 
import org.springframework.batch.core.JobParameters; 
import org.springframework.batch.core.launch.JobLauncher; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App { 
   public static void main(String[] args)throws Exception { 
  
      // System.out.println("hello"); 
      String[] springConfig  =  {"a_sample/job_hello_world.xml"};  
      
      // Creating the application context object  
      ApplicationContext context = new ClassPathXmlApplicationContext(springConfig); 
      
      // Creating the job launcher 
      JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher"); 
  
      // Creating the job 
      Job job = (Job) context.getBean("helloWorldJob"); 
  
      // Executing the JOB 
      JobExecution execution = jobLauncher.run(job, new JobParameters()); 
      System.out.println("Exit Status : " + execution.getStatus()); 
   }    
}

При выполнении вышеупомянутая программа SpringBatch выдаст следующий вывод: