반응형

1탄에 이어 설명해 본다.

스프링 배치(spring batch)는 별도로 추가 코딩 작업량을 줄여주는 많은 클래스들을 제공해서 

비즈니스 로직에 집중할 수 있도록 한다.

 

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

먼저 작업을 구성해야 하는데 @Configuration 클래스를 위 예제처럼 구성해야 한다.

@EnableBatchProcessing 어노테이션은 Job을 지원하는 주요 빈(bean)이 추가된다.

스프링 배치(spring batch)는 job과 step이 필요하므로

BatchConfiguration에 JobBuilderFactory와 StepBuilderFactory 객체를 추가한다.

 

이제 reader, processor, writer를 추가해 보자.

https://spring.io/guides/gs/batch-processing/#scratch 참조

reader()는 @Bean 어노테이션을 붙여서 사용한다.

<Person> 비즈니스 클래스를 사용한다.

return으로 FlatFileItemReaderBuilder<Person>() 생성자를 new를 사용해서 

인스턴스화 한다.

우선 .name은 personItemReader라고 정했다. 임의로 본인이 알아보고 쉽게 정하면 된다.

.resource는 데이터가 있는 파일을 지정한다. Database는 reader부터 다른 방식으로 사용한다.

.delimited() 는 파일 구분자로 파싱을 한다.

.names를 통해 키 값을 정하고 

.fieldSetMapper로 Person.class와 값을 매핑한다.

이렇게 .build() 하면 reader는 설정된다.

 

.

https://spring.io/guides/gs/batch-processing/#scratch 참조

 

두번째로 processor()는 reader()에서 읽어온 한 건의 데이터를 

비즈니스적으로 처리를 할 수 있다.

https://spring.io/guides/gs/batch-processing/#scratch 참조

 

마지막으로 writer()이다.

reader()에서 읽어 온 데이터를 가지고 저장/수정 처리를 한다.

.sql에서 insert문을 확인할 수 있다.

:firstName, :lastName은 Person의 속성 값과 매핑된다.

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

이제 실제 배치를 설정한다.

우선 Job을 만들고 .flow로 step을 지정한다.

step1에서 reader, processor, writer를 순서대로 지정해 준다.

 

https://spring.io/guides/gs/batch-processing/#scratch 참조

JobCompletionNotificationListener 클래스는 job 리스너로

job 시작 전과 후에 비즈니스 처리가 가능하다.

위 예제는 afterJob 메서드를 구현해서

Job이 끝날 때 마지막 작업을 코딩했다.

내용을 보면 select 문을 사용해서

입력 사항들이 잘 처리되었는지 확인하는 작업을 기록했다.

https://spring.io/guides/gs/batch-processing/#scratch 참조

System.exit와 SpringApplication.exit는 배치가 실행되고 완료에 대한 조치 시 필요하다.

위 두개의 코드가 JVM 종료를 보장한다.

지금까지 spring.io에 있는 스프링 배치(spring batch) 예제를 같이 살펴봤다.

정말 기초적인 부분만 다룬 것으로 좀 더 전문적으로 공부를 한다면

spring.io 상단 메뉴 projects에서 Spring Batch를 보면 된다.

 

 

반응형