-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
스프링배치 #16
Comments
오늘 한 일1. 과제 진행
spring active profile을 dev로 변경해서도 테스트하려 했는데 에러가 발생해서 약간의 시간 소요가 있었음. boilerplate에 작성되어 있던 log쓰는 부분에서 해당 path의 디렉토리에 쓸 수 없다는 에러라 내 노트북에서 변경하려 했는데 그 부분은 서버 path에 로그를 쓰는 거라 Local로 진행하면 되는 거였다.# 이슈 사항내일 할 일
공부한 내용
|
예제 : 휴면 회원 배치 설계가입한 회원 중 1년이 지나도록 상태 변화가 없는 회원을 휴면 처리하는 배치작업.
배치처리 구현 순서
Job 설정
(1) JobBuilderFactory를 주입받아서 JobBuilder를 만든다. (inactiveUserJob인데, 빌더를 반환한다.) Job 설정을 마치면 Step 설정 진행.
(1) inactiveUserStep이라는 이름의 StepBuilder를 factory를 통해 생성 Reader 설정
(1) 기본 빈 생성은 싱글톤이지만 @StepScope을 사용하면 해당 메소드는 Step의 주기에 따라 새로운 빈을 생성한다. 각 Step의 실행마다 새로운 빈을 만들기 때문에 지연 생성이 가능하고, @StepScope을 쓰면 반드시 구현된 반환 타입을 명시해서 반환해야 한다. Reader 설정 - QueueItemReader()
QueueItemReader : queue를 사용해서 저장하는 ItemReader 구현체. Processor 설정
읽어온 타겟 사용자를 휴면 회원으로 전환시키는 코드. Writer 설정public ItemWriter inactiveUserWriter() { |
배치 심화
다양한 ItemReader 구현 클래스, ItemWriter
JobParameter 사용
테스트 시에만 H2 데이터베이스를 사용하도록 설정@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
배치 인터셉터 리스터 설정
어노테이션 기반 리스너 설정
Step의 흐름을 제어하는 FlowStep의 흐름은 읽기 - 처리 - 쓰기인데, 세부적인 조건에 따라서 Step의 실행 여부를 정할 수 있다. 흐름의 조건에 대항다는 부분을 JobExcecution 라는 인터페이스의 decide 구현을 통해 만들 수 있다. |
Spring Batch
배치 사용 시나리오
읽기 -> 처리 -> 쓰기(수정된 내용 반영)
스프링 배치 계층 구조
개발자는 Application 계층의 비즈니스 로직에 집중할 수 있고, 배치 동작과 관련된 건 Batch Core에 있는 클래스를 이용해서 제어할 수 있다.
스프링 배치 구성
Job
Step
Job Launcher
ItemReader
ItemProcessor
ItemWriter
스프링 배치 메타 테이블과 Job Repository
배치 원칙과 가이드
The text was updated successfully, but these errors were encountered: