본문 바로가기
반응형

Spring Batch31

2. Spring Batch 가이드 - Batch Job 실행해보기 이번 시간에는 간단한 Spring Batch Job을 생성 & 실행하면서 전반적인 내용을 공부해보겠습니다. 작업한 모든 코드는 Github에 있으니 참고하시면 됩니다. 2-1. Spring Batch 프로젝트 생성하기 기본적인 프로젝트 개발 환경은 다음과 같습니다. IntelliJ IDEA 2018.2 Spring Boot 2.0.4 Java 8 Gradle lombok 기능을 많이 사용합니다. lombok 플러그인을 본인의 IDE에 맞게 설치하시면 좋습니다 :) Intellij IDEA, Eclipse 이를 기반으로 프로젝트 생성을 시작하겠습니다. 저는 IntelliJ Ultimate (유료) 버전에서 실행하지만, Eclipse도 화면 구성이 크게 다르진 않을것 같습니다. 먼저 Spring Boot 프.. 2018. 8. 5.
1. Spring Batch 가이드 - 배치 어플리케이션이란? Spring Batch In Action이 2011년 이후 개정판이 나오지도 않고 (2019.03 기준), 한글 번역판도 없고, 국내 Spring Batch 글 대부분이 튜토리얼이거나 공식 문서 중 일부분을 짧게 번역한 내용들이라 대용량 시스템에서 사용할때 정말 많은 삽질을 했습니다. Spring Boot가 활성화되면서 Spring Batch도 이전에 비해 훨씬 사용하기 편해졌지만 제대로 정리된 곳 찾기가 쉽지 않았습니다. 예전에 정상혁님께서 정리해주신 Spring Batch 시리즈가 있었는데, 찾기가 쉽지 않네요 ㅠ특히나 커머스 사이트에선 웹 어플리케이션만큼 배치 어플리케이션 작성하는 경우가 많습니다. 저 뿐만 아니라, 주변에서, 팀에서 Spring Batch 를 시작할때 마땅히 가이드라고 전달해드릴만.. 2018. 7. 31.
SpringBatch에서 ItemReader를 Mock객체로 교체하기 안녕하세요? 이번 시간엔 SpringBatch에서 ItemReader를 Mock객체로 교체하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 발단 스프링 배치로 테스트 코드를 짜다보면 정말 하기 싫은것이 ItemReader로 읽어올 데이터를 만드는 것입니다. 특히나 실제 업무에서 쓰다보면 수많은 필수값들과 엔티티 관계들로 인해 만들어야할 데이터가 많을 경우 더 그렇습니다. 이렇게 테스트 환경 구축이 힘들때는 역시나! Mock을 활용하면 좋다고 생각했습니다. ItemReader를 어떻게 Mocking할지 고민하.. 2017. 10. 17.
Spring Batch Paging Reader시 주의사항 안녕하세요? 이번 시간엔 Spring Batch Paging 구현시 주의 사항을 공유드리려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 문제 상황수백만의 데이터에서 조건에 맞는 데이터를 추출하여 가공하는 Spring Batch를 구현해야했습니다. Chunk Size를 설정한 후 Spring Batch를 실행하였는데 몇몇 데이터가 누락되기도 하고, 중복되기도 하는 문제가 발생하였습니다. 금액에 관련된 문제이기에 급하게 원인을 분석하기 시작했습니다.총 갯수가 맞았습니다.4만개가 호출되어야 하는 상황이였는데 정확히 4만개가 추출되.. 2017. 7. 29.
Spring Batch에서 영속성 컨텍스트 문제 (processor에서 lazyException 발생할때) 안녕하세요? 이번 시간엔 springboot-batch에서 reader로 읽은 데이터를 processor로 넘길때 영속성 컨텍스트가 문제가 되는 상황을 해결해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 문제 상황주문 시스템을 구축한다고 가정하겠습니다. 주문을 받은 뒤, 배치를 돌면서 주문의 내용을 History 테이블에 저장하는 기능입니다. 주문(PurchageOrder) 테이블에는 상품(Product)이 OneToMany로 잡혀있습니다. 도메인 코드는 아래와 같습니다.그리고 이를 사용한 배치 코드는 아래와 같습니다.(.. 2017. 4. 14.
Spring Batch ItemWriter에 List 전달하기 안녕하세요? 이번 시간엔 springboot-batch에서 writer에 List를 전달하는 예제를 진행해보려고 합니다. 모든 코드는 Github에 있기 때문에 함께 보시면 더 이해하기 쉬우실 것 같습니다. (공부한 내용을 정리하는 Github와 세미나+책 후기를 정리하는 Github, 이 모든 내용을 담고 있는 블로그가 있습니다. ) 문제상황정산과 관련된 프로젝트를 진행 중, Sales 데이터를 파싱하여 Tax 데이터를 저장하는 spring batch를 만들어야 한다고 가정하겠습니다. 예를 들어 A Sales가 조회되면 이를 파싱하여 Tax1,Tax2,Tax3으로 저장되어야 합니다. 그럼 간단하게 batch configuration을 작성하겠습니다.특별할것이 없는 코드입니다. 저 같은 경우엔 ItemW.. 2017. 4. 10.

728x90