004 Job Parameter

강의메모 #

스프링 배치 도메인 이해 - JobParameter #

기본 개념 #

  • Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체
  • 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도
  • JobParameters와 JobInstance는 1:1 관계

생성 및 바인딩 #

  • 어플리케이션 실행 시 주입

    • Java -jar LogBatch.jar requestDate=20210101
  • 코드로 생성

    • JobParameterBuilder
    @Component
    public class JobParameterTest implements ApplicationRunner {
    
      @Autowired
      JobLauncher jobLauncher;
    
      @Autowired
      Job job;
    
      @Override
      public void run(ApplicationArguments args) throws Exception {
    
          JobParameters jobParameters = new JobParametersBuilder().addString("name", "user1")
                  .addLong("seq", 1L)
                  .addDate("date", new Date())
                  .toJobParameters();
    
          jobLauncher.run(job, jobParameters);
      }
    } 
    
    • DefaultJobParametersConverter
     // Create a JobParametersConverter
     DefaultJobParametersConverter jobParametersConverter = new DefaultJobParametersConverter();
    
     // Convert command line arguments to JobParameters
     JobParameters jobParameters = jobParametersConverter.getJobParameters(new String[]{"param1=value1", "param2=value2"});
    
  • SpEL 이용

    • @Value(“#{jobParameter[requestDate]}”), @JobScope, @StepScope 선언 필수

BATCH_JOB_EXECUTION_PARAM 테이블과 매핑 #

  • JOB_EXECUTION 과 1:M 의 관계
  1. BATCH_JOB_INSTANCE img.png

  2. BATCH_JOB_EXECUTION img_1.png

  3. BATCH_JOB_EXECUTION_PARAMS img_2.png