인프런 커뮤니티 질문&답변

sion007005님의 프로필 이미지
sion007005

작성한 질문수

스프링 배치

SimpleJob - incrementer()

incrementer 관련 구현체 생성 시 질문

작성

·

177

0

안녕하세요 강사님 강의 정말 잘 듣고 있습니다!

 

스프링부트에서 기본 제공하는

RunIdIncrementer에서 마지막 반환값 코드를 보면

return new JobParametersBuilder(params).addLong(this.key, id).toJobParameters();

 

기존 paramers에 파라미터를 새롭게 add해주는 것으로 보이는데,

 

수업 10분쯤, 커스텀 클래스에서는

return new JobParametersBuilder().addString("run.id", id).toJobParameters();


이렇게 JobParametersBuilder 안에 params를 넣어주지 않았는데

왜 잘 동작하는 지 궁금합니다!

제가 이해를 못 했거나, 빠트린 부분이 있을까요~?

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

아래 AI 인턴답변과 비슷한데 요약하자면 이렇습니다.
첫 번째 코드는 기존의 JobParameters(params)를 기반으로 새로운 파라미터를 추가하는 방식입니다.

그래서 이 방식은 기존에 정의된 파라미터를 유지하면서 새로운 파라미터를 추가할 때 유용합니다.

 

두 번째 코드는 새로운 JobParametersBuilder 인스턴스를 생성하고 여기에 파라미터를 추가하는 방식인데 이 경우 기존 파라미터에 대한 정보가 없으므로, 완전히 새로운 JobParameters가 생성됩니다.

즉 수업에서 두 번째 방식이 잘 동작하는 이유는, 해당 커스텀 클래스에서 기존 파라미터는 무시하고 새로운 실행마다 고유한 파라미터로 생성되어 작업을 진행하기 때문에 문제가 되지 않는다고 보시면 됩니다.

sion007005님의 프로필 이미지
sion007005
질문자

답변 감사합니당 😄

0

안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대해 답변드리겠습니다.

말씀하신 RunIdIncrementer는 스프링 배치에서 기본적으로 제공하는 JobParametersIncrementer 구현체 중 하나로, 배치 작업을 실행할 때마다 실행 ID를 증가시켜주는 역할을 합니다. RunIdIncrementerJobParameters에 새로운 파라미터를 추가할 때 기존의 파라미터(params)를 사용하는 경우, 이는 기존에 전달된 파라미터를 유지하면서 새로운 파라미터를 추가하기 위함입니다.

수업에서 사용된 커스텀 클래스에서 JobParametersBuilder의 생성자에 params를 넣어주지 않고 사용된 것은, 단순히 새로운 파라미터만 추가해 새로운 JobParameters 객체를 생성하기 위함일 수 있습니다. 만약 이렇게 하면 기존에 전달되었던 파라미터는 무시되고, 오직 새롭게 추가된 파라미터만 JobParameters에 포함됩니다.

이 두 가지 방법은 상황에 따라 선택하여 사용할 수 있습니다. 커스텀 클래스에서 params를 사용하지 않고도 잘 동작하는 이유는 아마도 해당 상황에서 기존 파라미터를 유지할 필요가 없거나 다른 메커니즘을 통해 필요한 파라미터가 전달되고 있기 때문일 수 있습니다.

실제 강의 내용에 대한 구체적인 컨텍스트가 없기 때문에, 더 자세한 설명이 필요하시다면 해당 강의의 부분을 다시 확인하시거나 직접 커스텀 클래스의 코드와 작동 방식을 보시는 것이 좋을 것 같습니다.

sion007005님의 프로필 이미지
sion007005

작성한 질문수

질문하기