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

개발중님의 프로필 이미지
개발중

작성한 질문수

스프링 배치

@JobScope / @StepScope 아키텍처

두 번째 step를 호출할 때

작성

·

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

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

개발중님의 프로필 이미지
개발중

작성한 질문수

질문하기