반응형

[스프링/Spring] 스프링 배치(Spring Batch) org.springframework.data.transaction.ChainedTransactionManager 세팅하는 방법은 아래와 같이 진행하면 된다.

 

1. DB Connection할 dataSource.xml 파일 import 한다.

<!-- DB Connection 정보 설정 -->
<import resource="classpath:com/test/config/datasource/T1-datasource.xml" />
<import resource="classpath:com/test/config/datasource/T2-datasource.xml" />

 

2. 위에서 정의한 datasource의 transactionManager ID로 bean을 등록하여 리스트로 묶는다. 아래와 같이, transactionManager ID를 묶게 되면, 각 step에서 사용되는 transactionManager ID에 따라 작업을 실행한다.

<bean id="묶을 ID 입력"
	class="org.springframework.data.transaction.ChainedTransactionManager" lazy-init="false">
	<constructor-arg>
		<list>
			<ref bean="T1-dataSource.xml의 트랜잭션매니저 ID" />
			<ref bean="T2-dataSource.xml의 트랜잭션매니저 ID" />
		</list>
	</constructor-arg>
</bean>

 

3. ChainedTransactionManager를 tasklet 또는  chunk에 적용한다.

- testJob이라는 이름을 가진 job에는 testJobStep01의 Step을 가지고, testJobStep01은 1개의 tasklet을 실행한다.

- 이 testJobStep01의 tasklet은 testJobStep01Tasklet을 참조하고, transactionManger는 위에서 T1과 T2의 트랜잭션 매니저를 묶은 묶을 ID로 정의한다.

- 그 다음에, testJobStep01Tasklet tasklet은 class 위치에 있는 TestJobStep01Tasklet.java 라는 클래스를 실행하는데, sql세션은 각 T1, T2를 연결시킨다.

<job id="testJob"
	xmlns="http://www.springframework.org/schema/batch">
	<step id="testJobStep01">
		<tasklet ref="testJobStep01Tasklet" transaction-manager="묶을 ID"/>
	</step>		
</job>
	
<bean id="testJobStep01Tasklet"
	class="com.batch.tasklet.demo.trantest.TestJobStep01Tasklet" scope="step">
	<property name="sqlSessionTemplateT1" ref="sqlSessionTemplateT1" />
	<property name="sqlSessionTemplateT2" ref="sqlSessionTemplateT2" />
</bean>
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기