Hello Friends 예제 - 2

2018. 9. 29. 23:40Spring Batch

반응형

Hello Friends 실행 결과에 대한 메타 테이블 결과 확인 및 메타 테이블 사용하지 않는 경우에 대해 알아보자


Task Lists


1. 메타 테이블 조회

2. 프로그램 실행 시 메타 테이블에 결과 남기는 않기



메타테이블


메타테이블 ERD



프로그램 수행결과 조회


HelloJob.xml에 작성된 데로 HelloJob 실행되고 그 안에 HelloStep 이 정상적으로 실행 되어져서 메타테이블에 결과가 저장 되어 져있는 것을 확인 할 수 있다.



메타테이블에 남기지 않기


org.springframework.batch.support.transaction.ResourcelessTransactionManager 와 org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean 을 이용하면 테이블에 저장 하지 않고 프로그램을 수행할 수 있다.


Hello Friends 예제와 같이 단순히 DB 사용없이 작성하는 경우 위의 클래스를 사용하면 된다.

org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean 소스를 보면 아래와 같은 문구를 확인 할 수 있다.


using non-persistent in-memory DAO implementations. This repository is only really intended for use in testing and rapid prototyping


DB를 사용하지 않고 메모리 내 DAO 구현을 사용. 단순히 테스트 및 빠른 프로토타이핑 구현시 사용 하는 목적이 있다.


Task Lists

1. context-batch-resourceless-transaction.xml 작성

2. context-batch-mapjob-launcher.xml 작성

3. context-base.xml 변경


context-batch-resourceless-transaction.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context.xsd
						http://www.springframework.org/schema/jdbct
						http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">

	<context:annotation-config />
	
	<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" lazy-init="true" />
</beans>

org.springframework.batch.support.transaction.ResourcelessTransactionManager 적용



context-batch-mapjob-launcher.xml 


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/batch
						http://www.springframework.org/schema/batch/spring-batch.xsd">
				
	<bean id="eGovBatchRunner" class="egovframework.rte.bat.core.launch.support.EgovBatchRunner">
		<constructor-arg ref="jobOperator" />
		<constructor-arg ref="jobExplorer" />
		<constructor-arg ref="jobRepository" />
	</bean>
	
	<bean id="jobOperator"
		class="org.springframework.batch.core.launch.support.SimpleJobOperator"
		p:jobLauncher-ref="jobLauncher"
		p:jobExplorer-ref="jobExplorer"
		p:jobRepository-ref="jobRepository"
		p:jobRegistry-ref="jobRegistry" />	
		
	<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
		<property name="jobRepository" ref="jobRepository" />
	</bean>
	
	<!-- JobRepositoryFactoryBean 대신 MapJobRepositoryFactoryBean 적용 -->
	<bean id="jobRepository"
		class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"
		p:transactionManager-ref="transactionManager" />
		
	<bean id="jobExplorer"
		class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean"
		p:dataSource-ref="dataSource" />
		
	<bean class="org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor">
		<property name="jobRegistry" ref="jobRegistry" />
	</bean>	
	
	<bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry" />
		
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource" />
	</bean>
						
</beans>


context-base.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/batch
						http://www.springframework.org/schema/batch/spring-batch.xsd">

	<import resource="classpath:/config/batch/context-batch-mapjob-launcher.xml" />					
	<import resource="classpath:/config/batch/context-batch-datasource.xml" />
	<import resource="classpath:/config/batch/context-batch-resourceless-transaction.xml" />
	<import resource="classpath:/config/batch/job/*.xml" />
				
</beans>						

프로그램 실행 결과 후 테이블 조회 시 마지막 수행한 JOB_INSTANCE_ID 보다 큰 값이 조회 되야 하지만 조회 되지 않는 것 을 확인 할 수 있다.


[소스레파지토리]

☞ https://github.com/roopy1210/springbatch/blob/master/spring_batch_tutorial

반응형

'Spring Batch' 카테고리의 다른 글

FILE TO DB - Delimiter 예제  (0) 2018.10.14
Spring+myBatis 환경설정  (0) 2018.10.13
Hello Friends 예제 - 1  (0) 2018.09.27
스프링 배치 환경 설정하기  (0) 2018.09.19
개발 환경 설정  (0) 2018.09.17