1탄에 이어 설명해 본다.
스프링 배치(spring batch)는 별도로 추가 코딩 작업량을 줄여주는 많은 클래스들을 제공해서
비즈니스 로직에 집중할 수 있도록 한다.
먼저 작업을 구성해야 하는데 @Configuration 클래스를 위 예제처럼 구성해야 한다.
@EnableBatchProcessing 어노테이션은 Job을 지원하는 주요 빈(bean)이 추가된다.
스프링 배치(spring batch)는 job과 step이 필요하므로
BatchConfiguration에 JobBuilderFactory와 StepBuilderFactory 객체를 추가한다.
이제 reader, processor, writer를 추가해 보자.
reader()는 @Bean 어노테이션을 붙여서 사용한다.
<Person> 비즈니스 클래스를 사용한다.
return으로 FlatFileItemReaderBuilder<Person>() 생성자를 new를 사용해서
인스턴스화 한다.
우선 .name은 personItemReader라고 정했다. 임의로 본인이 알아보고 쉽게 정하면 된다.
.resource는 데이터가 있는 파일을 지정한다. Database는 reader부터 다른 방식으로 사용한다.
.delimited() 는 파일 구분자로 파싱을 한다.
.names를 통해 키 값을 정하고
.fieldSetMapper로 Person.class와 값을 매핑한다.
이렇게 .build() 하면 reader는 설정된다.
.
두번째로 processor()는 reader()에서 읽어온 한 건의 데이터를
비즈니스적으로 처리를 할 수 있다.
마지막으로 writer()이다.
reader()에서 읽어 온 데이터를 가지고 저장/수정 처리를 한다.
.sql에서 insert문을 확인할 수 있다.
:firstName, :lastName은 Person의 속성 값과 매핑된다.
이제 실제 배치를 설정한다.
우선 Job을 만들고 .flow로 step을 지정한다.
step1에서 reader, processor, writer를 순서대로 지정해 준다.
JobCompletionNotificationListener 클래스는 job 리스너로
job 시작 전과 후에 비즈니스 처리가 가능하다.
위 예제는 afterJob 메서드를 구현해서
Job이 끝날 때 마지막 작업을 코딩했다.
내용을 보면 select 문을 사용해서
입력 사항들이 잘 처리되었는지 확인하는 작업을 기록했다.
System.exit와 SpringApplication.exit는 배치가 실행되고 완료에 대한 조치 시 필요하다.
위 두개의 코드가 JVM 종료를 보장한다.
지금까지 spring.io에 있는 스프링 배치(spring batch) 예제를 같이 살펴봤다.
정말 기초적인 부분만 다룬 것으로 좀 더 전문적으로 공부를 한다면
spring.io 상단 메뉴 projects에서 Spring Batch를 보면 된다.
'Software > Spring' 카테고리의 다른 글
[spring batch]처음 시작하기 1탄. (스프링 배치) (0) | 2021.11.21 |
---|---|
[스프링 왕초보]4. VSCode(Visual Studio Code)에서 스프링 부트 설정 및 실행해 보기. (Spring boot) (0) | 2021.10.31 |
[스프링 왕초보]3. Spring boot Test. 스프링 부트와 JUnit5로 웹 테스트(with)JUnit5 (0) | 2021.10.24 |
[스프링 왕초보]2. Spring boot IDE 설치해보기. 2/2(스프링 부트) (0) | 2021.10.17 |
[스프링 왕초보]1. Spring boot 처음 시작해봅니다. 1/2 (스프링 부트) (0) | 2021.10.11 |