• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

두 번째 step를 호출할 때

22.01.07 11:21 작성 조회수 190

0

안녕하세요. 강사님

강의 33:40 분에 '두번째 step를 호출할 때'라고 하셨는데 정확히 두번 step를 호출할 때가 어떤 의미인가요?

step1(@Value(~)) 메서드 호출하는 시점에 한 번,

stepBuilderFactory.get("step1")에서 두 번째인가요?

 

감사합니다.

답변 2

·

답변을 작성해보세요.

0

개발중님의 프로필

개발중

질문자

2022.01.11

답변 감사합니다.

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']}" 처리도 이루어지게 됩니다.

두번째 부터는 위의 구문을 다시 실행하지 않는다는 의미로 보시면 됩니다.