작성
·
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
가 생성됩니다.
즉 수업에서 두 번째 방식이 잘 동작하는 이유는, 해당 커스텀 클래스에서 기존 파라미터는 무시하고 새로운 실행마다 고유한 파라미터로 생성되어 작업을 진행하기 때문에 문제가 되지 않는다고 보시면 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
님의 질문에 대해 답변드리겠습니다.
말씀하신 RunIdIncrementer
는 스프링 배치에서 기본적으로 제공하는 JobParametersIncrementer
구현체 중 하나로, 배치 작업을 실행할 때마다 실행 ID를 증가시켜주는 역할을 합니다. RunIdIncrementer
가 JobParameters
에 새로운 파라미터를 추가할 때 기존의 파라미터(params
)를 사용하는 경우, 이는 기존에 전달된 파라미터를 유지하면서 새로운 파라미터를 추가하기 위함입니다.
수업에서 사용된 커스텀 클래스에서 JobParametersBuilder
의 생성자에 params
를 넣어주지 않고 사용된 것은, 단순히 새로운 파라미터만 추가해 새로운 JobParameters
객체를 생성하기 위함일 수 있습니다. 만약 이렇게 하면 기존에 전달되었던 파라미터는 무시되고, 오직 새롭게 추가된 파라미터만 JobParameters
에 포함됩니다.
이 두 가지 방법은 상황에 따라 선택하여 사용할 수 있습니다. 커스텀 클래스에서 params
를 사용하지 않고도 잘 동작하는 이유는 아마도 해당 상황에서 기존 파라미터를 유지할 필요가 없거나 다른 메커니즘을 통해 필요한 파라미터가 전달되고 있기 때문일 수 있습니다.
실제 강의 내용에 대한 구체적인 컨텍스트가 없기 때문에, 더 자세한 설명이 필요하시다면 해당 강의의 부분을 다시 확인하시거나 직접 커스텀 클래스의 코드와 작동 방식을 보시는 것이 좋을 것 같습니다.
답변 감사합니당 😄