쿼리나 기타 로직보다 아래 설정이 중요한 듯 하여 아래 설정을 기록으로 남긴다.
job에 대해서 요약하면
# reader에서 데이타를 읽어서 process 에서 처리 하고 writer로 결과를 기록 한다.
물론 위 설정 외에 각 시작 구간마다 이벤트를 받아 처리 할 수 있는 listener 같은 것도 제공한다.
reader, writer는 커스텀 하지 않고 mybatis에서 기본으로 제공하는 걸 이용했다.
참고) https://mybatis.github.io/spring/ko/batch.html
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository">
</property></bean>
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager">
</property></bean>
<!-- sent type sent -->
<job:job id="rstJob" job-repository="jobRepository">
<job:step id="step1">
<tasklet>
<chunk reader="rstReader" processor="memberRstProcess" writer="rstWriter" commit-interval="500">
</chunk>
</tasklet>
</job:step>
</job:job>
<bean id="memberRstProcess" class="com.xxxxx.MemberRstProcess">
<bean id="rstReader" class="org.mybatis.spring.batch.MyBatisPagingItemReader" p:sqlsessionfactory-ref="sqlSessionFactory" p:queryid="com.xxxxx.mapper.QueryMapper.selectMemberRstList" p:pagesize="500" scope="step">
<bean id="rstWriter" class="org.mybatis.spring.batch.MyBatisBatchItemWriter">
<property name="sqlSessionFactory" ref="sqlSessionFactory">
<property name="statementId" value="com.xxxxx.mapper.QueryMapper.updateMemberRst">
</property></property></bean>
</bean></bean>
댓글 없음:
댓글 쓰기