[스프링 배치] StepScope
빈 스코프는 특정 빈 정의가 주어졌을 때 해당 클래스의 인스턴스화(객체 생성)를 어떻게 할 것인지를 지정하는 역할을 한다.
스프링 배치는 StepScope
라는 빈 스코프를 제공한다. StepScope
는 배치의 스텝과 빈을 연결짓는 역할을 한다.
StepScope
클래스는 BeanFactoryPostProcessor
인터페이스를 구현하여 StepScope
를 스프링 빈에 자동으로 적용한다. StepScope
를 사용하여 스프링에 의해 구성된 빈을 잡의 스텝 실행 시점에 인스턴스화함으로써 스텝 구성 및 스텝 매개변수를 지정할 수 있다.
스프링 배치는 StepScope
와 SpEL을 이용하여 런타임 실행 컨텍스트에 값을 전달할 수 있으며 이를 통해 잡과 스텝에 관련된 엔티티에 접근하여 구성의 지연 바인딩(late binding)이 가능하다. 지연 바인딩을 사용하여 배치 실행 시점에 지정되는 배치 파라미터(JobParameter
)를 배치 구성에 사용할 수 있다.
배치 실행에 필요한 여러 속성값을 배치 구성에 하드코딩할 필요 없이 배치 실행(런타임) 시 전달되는 JobParameters
로부터 값을 꺼내 StepScope
빈의 속성으로 설정 가능하다. 스프링 배치는 배치를 구성할 때 개발 시 값을 알 수 없는 경우 배치 실행 동안 런타임에 이러한 값을 평가한다.
StepScope
를 통해 접근 가능한 엔티티는 다음과 같다.
jobParameters
jobExecutionContext
stepExecutionContext
Comments