2021-08-04

0804 스프링 배치 배운 것 정리

 1. @EnableBatchProcessing 

: JobRepository, JobLauncher, JobFactory, StepFactory 자동 주입 가능하게 해주는 어노테이션. @Configuration과 함께 반드시 넣어주자

2. JobRepository :   배치관련 메타데이터 저장하는 역할

3. JobLauncher : Job을 실행하는 역할

4. Job : 어떠한 하나의 업무 단위. 여러개의 Step으로 구성되어 있다.

5. Step : Reader, Processor , Writer로 구성되어있으며 스프링 배치는 다양한 클래스의 Reader와 Writer를 제공한다. Processor는 데이터를 가공하는 역할, 비지니스 로직을 포함한다. A클래스를 B클래스로 변환한다거나 할때 필요함. 필수는 아님. (하지만 보통은 쓰겠지..?)

6. @JobScope : Step에 사용가능. 지연로딩을 가능하게 한다. 어플리케이션 로딩 시점이 아니라 해당 Job이 실행될때마다 Step을 새로 생성한다. (싱글톤이 아님)

7. @StepScope : Reader, Writer, Processor , Tasklet에 사용가능. 지연로딩을 가능하게 한다. 해당 Step실행시마다 새로 생성된다.

8. @JobScope, @StepScope를 왜 사용해야 하는가? -> 

1) 지연로딩이 가능하다 

2) JobParameter를 사용할 수 있다. 이로써 다양한 환경변수를 이용하여 배치 프로그램을 동작시킬수 있게 된다. 어플리케이션 로딩시점에 파라메터를 정하지않고 배치 실행시점에 - 비지니스 로직이 돌아가는 순간마다 - 파라메터를 다르게 할 수 있기 때문이다.

3) 여러 Step혹은 Job을 병렬적으로 실행할 때 발생하게 되는 동시성문제를 해결할 수 있다. (싱글톤이 아니라, 개개별로 새로 생성되기 때문에)

9. JobInstance  = Job + JobParameter. 

JobInstance를 run하면 JobExecution이라는 리턴값을 받을 수 있다. 해당 Job에 대한 메타데이터 정보를 포함한다. 이를테면 Job의 성공실패 여부 같은 것들. 

마찬가지로 Step에 대한 StepExecution이 존재함.  

10. chunk: 커밋의 단위. 대강 테이블 row1개라고 생각하면 편하다.

이를테면 reader의 chunk단위가 100 -> 100행씩 읽는다. 

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...