인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김석호님의 프로필 이미지

작성한 질문수

스프링 배치

ExecutionContext

JobExecution과 JobExecutionContext와의 관계

작성

·

24

0

Q1) JobExecution과 JobExecutionContext는 job이 실행될때마다 생기는게 맞나요?

Q2) 맞다면 강의 예제와 같이 같은 job을 두 번 실행(첫번째 실패, 두번째 성공) 했을때 두번째 JobExecutionContext가 첫번째 JobExeuctionContext에 저장된 내용을 알수있다는게 이해가 되지 않습니다. 하지만 실제로 참고해서 동작하고 있고요. 그렇다면 같은 job이고 같은 jobParameter로 연속해서 실행하면 이전 잡을 복사해서 생성이 되나요? 아니면 다른 방법이 있나요?

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김석호님! 스프링 배치에서의 JobExecutionJobExecutionContext에 대한 질문을 주셨네요.

Q1) JobExecutionJobExecutionContext는 job이 실행될 때마다 생기는 게 맞나요?

네, 맞습니다. JobExecution은 특정 JobInstance의 한 번의 실행을 나타내며, 매번 job이 실행될 때마다 새롭게 생성됩니다. 이와 함께 JobExecutionContext도 매 실행마다 새로 만들어지며, 해당 실행의 컨텍스트나 상태 정보를 저장하는 데 사용됩니다.

Q2) 동일한 job과 동일한 jobParameter로 연속해서 실행할 경우, 두 번째 JobExecutionContext가 첫 번째 JobExecutionContext의 내용을 어떻게 참조할 수 있는가?

Spring Batch에서 동일한 JobInstanceJobParameter로 재실행될 경우, JobExecutionContext에 저장된 상태와 데이터는 이전 실행으로부터 복구됩니다. 이는 주로 실패한 job의 재시작을 지원하기 위한 것으로, 실패한 지점부터 작업을 다시 시작할 수 있도록 이전 컨텍스트의 데이터를 복원하는 기능을 포함하고 있습니다.

즉, 동일한 JobInstance가 존재하는 상황에서 job이 실패했다면, 동일한 JobParameter로 job이 재실행될 때 이전 JobExecutionContext의 데이터를 활용하여 연속적인 실행을 지원하도록 설계되어 있습니다.

관련된 링크에서 더 자세한 내용을 참고하실 수 있습니다:
- 동일한 JobInstance에 대해서는 JobExecution이 복사가 되나요?

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.