이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다 JobExplorer, JobRegistry, JobOperation Spring Batch는 Batch 처리 도움을 주기 위해 위의 객체를 제공한다. 위의 객체에 대한 정리는 아래에서 살펴보자. JobExplorer JobExplorer는 JobRepository의 읽기전용 모드임. 실행 중인 Job의 실행 정보인 JobExecution, StepExecution을 조회할 수 있음. → 꺼내서 Stop하는데 도움됨. JobRegistry 생성된 Job을 자동으로 등록, 추적 및 관리하며 여러 곳에서 Job을 생성한 경우 스프링 컨테이너에서 Job을 수집해서 사용할 수 있음. Job Registry의 기본 구현체는 MapJobRegistry임..
이 글은 인프런 정수원님의 강의를 보고 복습하며 정리한 글입니다. Listener 리스너는 배치 흐름 중에 Job, Step, Chunk 실행 전후에 어떤 일을 하도록 하는 Interceptor 개념의 클래스다. 스프링 MVC의 Interceptor가 실제로 HandlerAdapater 호출 전후로 Interceptor가 호출되는 것처럼 Job, Step, Chunk 전후로 오버라이딩된 메서드가 호출된다. 주로 각 단계별로 로그 기록을 남기거나, 진행된 시간, 실행 상태 정보들을 참조 및 조회하는데 도움이 된다. SpringBatch에서 Listener를 사용하기 위해서는 API 리스너에 리스너를 지정해주면 된다. Listener 종류 Job JobExecutionListener : Job 실행 전/후 ..
이 글은 인프런 정수원님의 강의를 듣고 복습하며 작성한 글입니다. SpringBatch Test → @SpringBatchTest SpringBatch Test를 할 때는 @SpringBatchTest 어노테이션을 이용하면 편리하다. @SpringBatchTest를 사용하면 Batch Test에서 사용할 수 있는 유용한 스프링 빈을 등록해준다. JobLauncherTestUtils launcherJob() / launcherStep() 같은 스프링 배치 테스트 필요 유틸성 메서드 지원 JobRepositoryTestUtils JobRepository를 사용해서 jobExecution을 생성 및 삭제 기능 메서드 지원 StepScopeTestExecutionListener @StepScope 컨텍스트를 생..
이 게시글은 인프런 정수원님의 강의를 복습하며 작성한 글입니다. CompositeItemProcessor CompositeItemProcessor는 여러 ItemProcessor를 체이닝해서 사용할 수 있도록 지원해주는 클래스다. ItemProcessor 하나가 모두 처리하기에는 무거운 것이 있다고 하면, CompositeItemProcessor를 이용해서 ItemProcessor를 좀 더 분절화해서 코드 복잡도를 낮출 수 있다. 밑에서 간단히 코드를 보면서 확인할 예정이지만, CompositeItemProcessor는 입력받은 Input Chunk의 Item을 하나씩 가지고 와서, 모든 ItemProcessor에 순서대로 처리를 해준다. 그리고 Output Chunk에 1개씩 저장해주는 형식으로 동작한..
이 게시글은 인프런 정수원님의 강의를 수강하고 복습하며 정리한 글입니다. ItemWriterAdapter ItemWriterAdapter는 이미 내부적으로 사용하고 있는 Service 계층의 메서드를 Spring Batch Job에서 사용할 수 있도록 제공된다. Spring Batch는 여러 형태의 ItemWrtier 구현체를 제공하고 있으나, 모든 조건을 만족하지는 않기 때문이다. 코드의 재사용성을 생각한다면 ItemWriterAdapter를 사용하는 것도 하나의 방법이 될 수 있다. ItemWriterAdapater API ItemWriterAdapter는 ItemWriterAdapter 클래스를 생성하고, 생성된 객체에 이런저런 파라메터를 설정해주면 된다. setTargetMethod : inovk..