Cộng đồng Hỏi & Đáp của Inflearn
job, step execution 관련 질문 드립니다.
Đã giải quyết
Viết
·
16
0
안녕하세요.
잡이 어떻게 스텝에서 사용하는 컨텍스트 값까지 가지고 있는지 잘 이해가 되지 않아 질문드립니다.
분명 JobExecutionContext에 넣은 것이 아니라 StepExecutionContext에 값을 저장했는데, 확인해보니 JobExecutionContext에도 동일하게 저장된 것처럼 보여서 헷갈렸습니다.
제가 이해한 바로는 JobExecutionContext와 StepExecutionContext는 서로 다른 영역이고,JobExecutionContext는 step 간 공유용, StepExecutionContext는 해당 step 전용으로 알고 있습니다.
그런데 왜 StepExecutionContext에 넣은 값이 JobExecutionContext에도 같은 형태로 보이는지 잘 모르겠습니다.
Quiz
Điều gì sẽ xảy ra nếu chạy lại một Spring Batch Job đã hoàn thành thành công với cùng một tham số?
Một JobInstance và JobExecution mới được tạo ra và thực thi lại.
Spring Batch ngăn chặn việc thực thi trùng lặp nên Job không được chạy.
Tiếp tục thực thi nối tiếp JobExecution hiện có.
Chương trình chạy không có lỗi, nhưng kết quả không được lưu vào cơ sở dữ liệu.
Câu trả lời 2
0
안녕하세요 배고프면근손실님 질문 남겨주셔서 감사합니다.
음 아무래도 리스너 설정이 되어있을 확률이 있을꺼 같습니다. ExecutionContextPromotionListener 확인이 필요할꺼같아요. 왜냐하면 해당 리스터는 Step이 완료될 떄 지정한 key를 JobExecutionContext 로 복사하는 역할을 수행하기 떄문에 해당 부분을 확인해보시면 좋을꺼같아요.
0
안녕하세요, 인프런 AI 인턴입니다. 배고프면근손실님,
Spring Batch에서 JobExecutionContext와 StepExecutionContext 간의 관계와 동작 방식에 대해 궁금해 하신 부분에 대해 설명해 드리겠습니다.
기본적으로 JobExecutionContext와 StepExecutionContext는 두 개의 별도 영역으로, 각자의 목적을 가지고 있습니다. 전체 플로우에서 각자 상태나 데이터를 관리하기 위한 부분이며, 약간 구체적으로 설명하면 다음과 같습니다:
JobExecutionContext: 이 컨텍스트는 잡 수준에서 데이터를 관리합니다. 여러 스텝에 걸쳐 공통으로 사용될 수 있는 데이터를 저장하는 데 목적이 있으며, 잡의 전체 실행 동안 지속됩니다.
StepExecutionContext: 반면에 이 컨텍스트는 스텝 수준에서 데이터를 관리하며, 각각의 스텝 실행 내에서만 사용됩니다. 스텝이 끝나면 해당 스텝과 관련된 데이터를 순차적으로 처리하는 데 사용되어, 다음 스텝에서는 초기화됩니다.
질문하신 내용 중에서, StepExecutionContext에 특정 값을 넣었을 때, 그것이 JobExecutionContext에도 반영되는 듯이 보이는 현상은 설정이나 코드 내에서 데이터가 명시적으로 두 컨텍스트 사이에 복사되거나, 공유되고 있을 가능성이 있습니다. 보통은 기본적으로 서로 독립적으로 관리되지만, 특정상황에서는 프로그래머가 코드나 설정을 통해 값을 두 컨텍스트 사이에 공유할 수 있습니다.
다음을 점검해보세요:
- 특정 코드에서 StepExecution의 데이터를 JobExecution에 복사하는 부분이 있는지 확인합니다.
- 사용 중인 라이브러리나 프레임워크 설정에서 두 컨텍스트 간 데이터의 전파나 동기화가 자동으로 설정되었는지 살펴봅니다.
관련 내용을 더 자세히 알고 싶으시다면 다음의 유사한 질문과 답변을 참고하실 수 있습니다:
- Spring Batch에서 ExecutionContext 사용 방법
- ExecutionContext와 동일 스코프 내 데이터 공유
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




