저장소(Repository) 예제

개요

배치 수행 시, 데이터 처리 대상(DB,File등)에 대한 설정을 보여주는 예제이다. EgovRepositoryFunctionalTests 예제는 리소스가 DB 인 jdbcCursorIoJob 과 리소스가 File인 delimitedIoJob의 수행과정을 보여주면서, 데이터가 DB에서 DB로 File 에서 File로 처리 된다.

설명

설정

Job 설정

저장소(Repository) 예제의 Job 설정 파일인 repositoryJob.xml 을 확인한다

Job 의 구성을 보면 리소스 타입에 따라 두 개의 Job으로 구성되어 있고, 각 타입에 따른 Reader와 Writer를 사용하게 된다.

  • jdbcCursorIoJob : 리소스가 DB인 Job
  • delimitedIoJob : 리소스가 파일인 Job
<!--resource가 DB일 경우 xml에 등록 -->
<job id="jdbcCursorIoJob" xmlns="http://www.springframework.org/schema/batch">
 <step id="jdbcCursorIoStep1">
  <tasklet>
   <chunk reader="itemReaderDB" processor="itemProcessor" writer="itemWriterDB" commit-interval="2" />
  </tasklet>
 </step>
</job>
 
<!--resource가 파일일 경우 xml에 등록 또는 JobParameter에 등록 -->
<job id="delimitedIoJob" xmlns="http://www.springframework.org/schema/batch"> 
 <step id="delimitedIostep1">
  <tasklet> 
   <chunk reader="itemReaderFile" processor="itemProcessor" writer="itemWriterFile" commit-interval="2"/> 
  </tasklet>
 </step> 
</job>

JunitTest 구성 및 수행

JunitTest 구성

repositoryJob 설정과 관련 클래스들로 Junit Test를 수행한다. 이 때 배치가 수행되고, 관련된 내용을 확인할 수 있다.

✔ JunitTest 클래스의 구조는 배치실행환경 예제 Junit Test 설명을 참고한다.
✔ assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus()) : 배치수행결과가 COMPLETED 인지 확인
✔ jobLauncher.run(jobRegistry.getJob(“jdbcCursorIoJob”), getUniqueJobParameters(“jdbcCursorIoJob”)) : 이름이 jdbcCursorIoJob 인 Job을 수행
✔ getUniqueJobParameters에서 JobParameter에 배치에 필요한 입력 리소스, 출력 리소스 위치정보를 넘김

@ContextConfiguration(locations = {
		"/egovframework/batch/simple-job-launcher-context.xml",
		"/egovframework/batch/jobs/repositoryJob.xml" })
public class EgovRepositoryFunctionalTests {
 
	@Test
	public void testUpdateCredit() throws Exception {
		// 1. resource가 DB인 Job 실행
		JobExecution jobExecution = jobLauncher.run(jobRegistry.getJob("jdbcCursorIoJob"),getUniqueJobParameters("jdbcCursorIoJob"));
		assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
 
		// 2. resource가 file 인 Job 실행
		jobExecution = jobLauncher.run(jobRegistry.getJob("delimitedIoJob"),getUniqueJobParameters("delimitedIoJob"));
		assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());
	}
 
	/**
	 * 잡파라미터를 설정하기 위한 메소드
	 */
	protected JobParameters getUniqueJobParameters(String jobName) {
 
		JobParametersBuilder builder = new JobParametersBuilder();
		// Job 파라미터로 등록 가능
		builder.addString("inputFile",	"/egovframework/data/input/delimited.csv");
		builder.addParameter("timestamp", new JobParameter(new Date().getTime()));
 
		JobParameters jobParameters = builder.toJobParameters();
		return jobParameters;
	}
}

JunitTest 수행

수행방법은 JunitTest 실행을 참고한다.

결과확인

  • DB의 CUSTOMER 테이블을 보면 Repository 타입이 DB인 데이터 처리 결과를 확인할 수 있다.


  • delimitedOutput.csv 파일을 보면 Repository 타입이 File인 데이터 처리 결과를 확인할 수 있다.


참고자료

 
egovframework/rte2/brte/batch_example/repository_mgmt.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki