2018. 9. 29. 23:40ㆍSpring 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 |