2013년 8월 6일 화요일

Spring Batch jobRepository 설정

나는 아래와 같이 설정을 해 놓고 사용중이었다. (mysql로 DB를 사용중)
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${batch.jdbc.driver}</value>
</property>
<property name="url">
<value>${batch.jdbc.url}</value>
</property>
<property name="username">
<value>${batch.jdbc.user}</value>
</property>
<property name="password">
<value>${batch.jdbc.password}</value>
</property>
</bean>

<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<batch:job-repository id="jobRepository"
data-source="dataSource"
transaction-manager="transactionManager" />

<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>

위의 설정에서 불편한 점은 실제 DB에 Job Instance와 Batch 정보 등 메타데이터가 저장되기 때문에 테스트하면서 Job을 실행할 때 마다 JobParameter를 매번 바꿔야 한다는 점이다.

이 메타데이터를 실제 DB에 저장하지 않고 메모리상에서만 저장하고 사용하는 방법이 있는데 이 방법을 사용하면 매번 JobParameter를 바꾸지 않아도 되지 때문에 이 방법을 적용시켜 보았다.

아래 출처에서 나와 있는 부분으로 jobRepository 부분만 바꾸니 잘 된다. ㅠㅠ
<bean id="jobRepository"
  class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
    <property name="transactionManager" ref="transactionManager"/>
</bean>

출처: http://static.springsource.org/spring-batch/reference/html/configureJob.html

댓글 없음:

댓글 쓰기