반응형
[스프링/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>
반응형
'IT > 스프링(Spring)' 카테고리의 다른 글
[스프링/Spring] 스프링 배치(Spring Batch) 중복된 Bean 1개의 xml에서 정의하는 방법 (0) | 2022.04.14 |
---|---|
[스프링/Spring] 스프링 배치(Spring Batch) JUnit java.lang.IllegalStateException: Failed to load ApplicationContext 문제 해결 방법 (0) | 2022.04.13 |
[스프링/Spring] 스프링(Spring) JNDI 예제 (0) | 2022.04.06 |
[스프링/Spring] 스프링 배치(Spring Batch) 파티셔닝(Partitioning) 예제 (0) | 2022.03.28 |
[스프링/Spring] 스프링 배치(Spring Batch) DB를 통한 플로우 (0) | 2022.03.27 |
[스프링/Spring] 스프링 배치(Spring Batch) 적용하는 예제 (0) | 2022.03.27 |
[스프링/Spring] 스프링(Spring) DataSource 정리 (0) | 2022.03.27 |
[스프링(Spring)] pom.xml의 구조 (0) | 2022.03.13 |
최근댓글