사용자 도구

사이트 도구


springframework:batch

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판 양쪽 다음 판
springframework:batch [2018/11/07 15:57]
kwon37xi [DefaultBatchConfigurer]
springframework:batch [2018/11/21 17:31]
kwon37xi [JobInstanceAlreadyCompleteException: A job instance already exists and is complete for parameters 오류 발생]
줄 118: 줄 118:
             .incrementer(new RunIdIncrementer())             .incrementer(new RunIdIncrementer())
             .build();             .build();
 +</code>
 +
 +===== RunIdIncrementer 사용시 기존 파라미터가 현재 파라미터 지정한 것을 덮어씀  =====
 +  * ''RunIdIncrementer''를 사용하게 되면 항상 기존 실행됐던 Job의 파라미터가 현재 파라미터를 덮어쓰는 현상이 발생한다.
 +  * 이유는 ''RunIdIncrementer''가 동일 파라미터로 Job을 실행하려고 사용하는 것이라서 인 듯 하다.
 +  * 따라서 ''RunIdIncrementer''를 사용하면서도 파라미터를 유지하려면 다른 방식을 써야 한다.
 +
 +<code java>
 +/**
 + * 파라미터를 복사하지 않는 RunIdIncrementer
 + */
 +public class ParamCleanRunIdIncrementer implements JobParametersIncrementer {
 +    private static String RUN_ID_KEY = "run.id";
 +    private String key = RUN_ID_KEY;
 +
 +    public void setKey(String key) { this.key = key; }
 +
 +    @Override
 +    public JobParameters getNext(JobParameters parameters) {
 +        JobParameters params = (parameters == null) ? new JobParameters() : parameters;
 +        long id = params.getLong(key, 0L) + 1;
 +        return new JobParametersBuilder().addLong(key, id).toJobParameters(); // 이부분이 RunIdIncrementer와 다르다.
 +    }
 +}
 </code> </code>
  
springframework/batch.txt · 마지막으로 수정됨: 2023/12/08 13:43 저자 kwon37xi