콘텐츠로 건너뛰기

Spring Batch의 getJobParameters()의 동작법

Spring Batch 코드를 만들 때, 보통 아래와 같은 코드를 이용해서 jobParameter를 전달받습니다.

물론 배치를 실행할 때, argument를 주게 되겠죠.

그런데 말입니다…

maxCount=1 숫자입니다. 그렇다면, 아래와 같은 코드도 가능하지 않을까요?

실제로 JobParameters는 getLong(), getString(), getDate(), getDouble() 메소드를 지원합니다.

심지어 defaultValue까지 지정할 수 있게 되어있습니다.

JobParameters.java

 

하지만 위에서 argument를 준 것처럼 maxCount=1 이라고 주면, 아래와 같은 오류를 리턴합니다.

실제로 JobParameters를 생성하는 곳을 보면 아래와 같이 파싱합니다.

즉, argument를 줄 때, (long)maxCount=1 이라고 줘야 정상적으로 long type으로 파싱하게 됩니다.
(왜 다른 instance variable은 public인데, double만 private일까요…-ㅅ-)

DefaultJobParametersConverter.java

argument를 줄 때, 따로 type을 지정하지 않으면 모두 String으로 파싱됩니다.

그 때, getLong() 등의 다른 type getter를 이용하면 오류가 발생합니다.

그래서 혹시라도 jenkins job을 설정할 때, 실수할 여지가 있는 코드보다는 차라리 아래와 같은 코드 작성하기를 추천합니다.

(누가? 제가요…^^)

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다