spring
-
[퍼옴] [Spring Batch] 스프링 배치 강좌 3. JobExecutionContext를 활용하여 스텝간 데이터 공유하기spring 2021. 4. 14. 14:39
목적 이전 글에서 배운Metadata와JobRepository를 활용해본다. 여러 개의 스텝을 만들고 스텝들이 어떻게JobExecutionContext를 사용하여 데이터를 공유하는지 알아보자. common-context.xml Job들이 공통으로 사용하는 빈들을 모아 앞으로 재사용 하도록 하자. src/main/resource폴더에common-context.xml파일을 생성하자. tasklet 아래tasklet을src/main/java에com.fwantastic.example2패키지에 생성하자. 자세한 설명은 주석을 참조하자. CounterIncrementerTasklet.java package com.fwantastic.example2; import org.springframework.batch.cor..
-
[퍼옴] [Spring Batch] 스프링 배치 강좌 2. Metadata와 JobRepository 알아보기spring 2021. 4. 14. 14:30
재미없는 이론 공부가 돌아왔다. Intro때 잠깐 살펴보았던 JobRepository를 파헤쳐보자. 스프링 배치 프레임워크는 위의 6개 테이블 사용해 작동된다. BATCH_JOB_INSTANCE Job이 실행되면 BATCH_JOB_INSTANCE에 새로운 row를 만든다. Job의 이름과 Job이 시작될때 넘겨받은 파라미터를 Serialize (직렬화) 해서 저장한다. Job의 flow (high level): -> 시작 -> BATCH_JOB_INSTANCE에 동일한 JOB_NAME과 JOB_KEY를 가진 row가 있는지 확인. 찾으면 JobInstance must not already exist 에러 메세지 출력 후 종료 -> BATCH_JOB_INSTANCE에 row 생성 -> BATCH_JOB_E..
-
[퍼옴] [Spring Batch] 스프링 배치 강좌 1. 프로그래밍의 꽃. 스프링 배치 Hello World!spring 2021. 4. 14. 14:25
시작하기에 앞서 스프링 배치 Intro를 읽지 않았다면 먼저 보고 오자. 이전 글: [Spring Batch] Intro - 스프링 배치 기본 개념 익히기 새로운 것을 배울때 Hello World를 빼먹을수 없다. 초 심플한 배치 job을 만들어보자. 프로젝트 만들기 STS (Spring Tools Suite) 기준으로 작성되었다. STS 다운로드: https://spring.io/tools File -> New -> Maven Project -> Create a simple project (skip archetype selection) 클릭. 다음과 같이 입력. Group Id: com.fwantastic Artifact Id: spring-batch-example Version: 0.0.1-SNAPS..
-
[퍼옴] [Spring Batch] Intro - 스프링 배치 기본 개념 익히기spring 2021. 4. 14. 14:18
스프링 배치 강좌 목록: https://www.fwantastic.com/p/spring-batch.html 스프링 배치는 스프링을 만든 Pivotal의 프로젝트 중 하나이다. 미국에 Accenture (이제는 아련한 나의 전 직장...) 라는 아주 큰 규모의 컨설팅 회사가 정부 프로젝트를 하며 얻은 비즈니스 로직과 노하우에 Pivotal이 가진 기술로 협력하여 만들어낸 결과물이다. 배치 작업을 위해 만들어진 프레임워크으로 가볍고, 빠르고, 실행 도중 문제가 생기면 그 지점부터 재시작할 수 있다는 점이다 (Restartability). 스프링 배치를 하려면 스프링을 알고있어야 하기 때문에 모른다면 스프링을 먼저 공부하는것을 추천한다. 스프링 오피셜 가이드: https://spring.io/guides 스..
-
Spring Boot 개념spring 2021. 4. 14. 13:35
처음 시작하는 수준에서, 문서만 보고 이렇게 구현하고 개념을 잡는데 까지 약 20여분이 걸렸으니, node.js나 python등의 여타 모던웹 언어와 크게 진입은 다르지 않다. 실행도, 복잡한 톰캣 설치나 배포 등이 필요 없이, jar 파일을 java -jar로 실행만 하면 spring boot가 tomcat이나 jetty를 임베드한 상태로 기동이 된다. 마치 node.js에서 코드 작성하고, node 소스.js를 기동하면 되는 것과 같은 편리함이다. 기존의 복잡한 XML 설정도 과감하게 생략할 수 있으며, 운영에서 필요한 모니터링과 같은 API등을 Actuator라는 이름으로 제공한다. (Hearbeat 체크, 모니터링 메트릭스 API등) 무엇보다 장점은, 기존의 자바와 스프링 프레임웍에 제공하는 프레..
-
[퍼옴] Spring Batch 주요 개념spring 2021. 4. 14. 13:23
Job 하나의 배치 작업을 정의. 예를 들어 "API 서버의 사용로그 테이블의 데이타를 로그 분석 시스템으로 옮기는 배치" Job Instance 배치가 실제 실행되면, 각각의 실행을 Instance라고 한다. 예를 들어 Batch Job이 매주 한번씩 수행된다고 할때, 각각의 수행되는 Batch Job을 Batch Instance라고 한다. Job Execution 배치가 실행될때, 각 배치의 실행시, 실제 수행된 Execution을 정의한다. 예를 들어 Batch Job이 월요일 오전에 수행되었을때, 첫번째 실패하고, 두번째에 Retry에 의해 성공되었다면, 이 각각은 다른 Job Execution이 되고, 같은 작업을 시도하였기 때문에, 같은 Job Instance가 된다. Job Parameter..
-
07. spring batch - 배치 처리의 실제 샘플 (chunk: db 읽기)spring 2021. 4. 14. 11:19
가. 목표 해당 배치의 목표는 DB 테이블에서 데이터를 읽어 들여, 다른 테이블에 값을 insert 한다. ItemReader에서 데이터를 읽어 들여, ItemWriter로 insert할 예정이다. 사실 ItemProcessor를 사용하여 데이터 변환한 후 ItemWriter로 전달하는 샘플이 실제 사용에 가까우나, 일단 생략한다. 나. 배치 처리 설정 샘플 : /job-context.xml ㄱ. sqlMapClient 이 클래스는 iBatis를 사용하기 위한 클래스. 특별히 SpringBatch 전용 클래스는 아니다. ㄴ. IbatisPagingItemReader 설정 상 1페이지 10000 레코드를 sql문으로 select 해서 추출한 10000 레코드를 메모리에 전개. 전개 후 1 레코드 씩 ite..
-
06. spring batch - 스프링 배치 처리 샘플 (chunk 처리 : 파일 읽기)spring 2021. 4. 13. 17:19
가. 목표 SpringBatch에서 제공하는 소스를 가능한 이용해서 기능을 구현했다. ( 2012.03.17 ) Java 1.6이상 Spring 4.2.4 SpringSecurity 3.1 SpringBatch 3.0.7 SpringModules 0.9 ⇒ deprecated Struts 1.3.10 Easy Mock 3.0 JUnit 4.4 csv 파일을 읽어서 다른 파일에 쓰기 샘플. 이때 열을 바꿔서 출력. - SpringBatch로 읽어들인 파일 데이터를 FieldSet이라는 클래스에 보존한다. - FieldSet 에서 POJO 클래스로 값을 옮겨 적는 것을 매핑한다라고 한다. 나. 스프링배치의 기반에 관한 설정 /back-context.xml 다. 설정파일 샘플 /job-context.xml 설..