작성
·
257
0
안녕하세요. 강사님
강의 33:40 분에 '두번째 step를 호출할 때'라고 하셨는데 정확히 두번 step를 호출할 때가 어떤 의미인가요?
step1(@Value(~)) 메서드 호출하는 시점에 한 번,
stepBuilderFactory.get("step1")에서 두 번째인가요?
감사합니다.
답변 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']}" 처리도 이루어지게 됩니다.
두번째 부터는 위의 구문을 다시 실행하지 않는다는 의미로 보시면 됩니다.