인프런 커뮤니티 질문&답변
두 번째 step를 호출할 때
작성
·
342
0
안녕하세요. 강사님
강의 33:40 분에 '두번째 step를 호출할 때'라고 하셨는데 정확히 두번 step를 호출할 때가 어떤 의미인가요?
step1(@Value(~)) 메서드 호출하는 시점에 한 번,
stepBuilderFactory.get("step1")에서 두 번째인가요?
감사합니다.
퀴즈
SimpleJob과 FlowJob의 가장 큰 차이점 중 하나는 스텝 실패 처리 방식입니다. FlowJob은 SimpleJob과 비교했을 때 어떤 특징이 있을까요?
어떤 스텝이 실패하든 항상 Job은 성공 상태로 종료됩니다.
스텝 실패 시에도 정의된 흐름에 따라 다음 스텝이나 다른 흐름으로 전환하여 Job 실패를 회피할 수 있습니다.
스텝 실패 시 해당 스텝만 건너뛰고 다음 스텝을 순차적으로 실행합니다.
실패한 스텝부터 자동으로 재시작하여 실패를 복구합니다.
답변 2
0
0
정수원
지식공유자
네
최초로 step 의 임의의 메소드를 호출할 때는 프록시 객체의 타켓을 생성하는 처리가 이루어지고 두번째 step 의 임의의 메소드를 호출 할 경우 새로운 타겟을 생성하는 것이 아닌 JobContext 에 이미 저장된 타겟을 얻어서 참조가 가능하다 라는 것을 설명한 것입니다.
그래서 최초로 step 을 호출할 경우
@Bean
@JobScope
public Step step1(@Value("#{jobParameters['message']}") String message) {
System.out.println("jobParameters['message'] : " + message);
return stepBuilderFactory.get("step1")
.tasklet(tasklet1(null))
.build();
}
위의 구문이 실행되어 실제 타겟을 생성하게 되고 @Value("#{jobParameters['message']}" 처리도 이루어지게 됩니다.
두번째 부터는 위의 구문을 다시 실행하지 않는다는 의미로 보시면 됩니다.





