일반적으로 태스크릿 지향 방식의 배치 처리는 간단하게 처리되는 경우가 대부분이다.
따라서, 굳이 데이터 베이스의 트랜잭션 관리가 필요하지 않은 경우도 다반사인데, 이때마다 꼭 transactionManager를 넘겨주어야 할까?
이런 경우에는, DB 커넥션과 트랜잭션을 관리하는 PlatformTransactionManager 를 사용하지 않고 다른것으로 대체할 수 있다.
✅ 1. ResourcelessTransactionManager
이름 그대로 자원(Resource)을 가지고 있지 않은 트랜잭션 매니저
실제 데이터 베이스(DB)와 연결되지 않은, 껍데기만 있는 트랜잭션 매니저
스프링 배치가 동작하기 위해 형식적으로 필요한 트랜잭션 관리자의 역할을 함.
다만, 실제 DB의 Commit 이나 Rollback을 수행하지 않는 클래스 이다.
DB가 필요없는 단순 파일 처리
단순 API호출
테스트 코드 작성
✅ 2. 예시코드
@3ean
public Step openCafeStep(){
return new StepBuilder("openCafeStep", jobRepository)
.tasklet((contribution, chunkContext) -> {
System.out.println("[오픈] 카페 문을 열고 머신을 예열 합니다.");
return RepeatStatus.FINISHED; // 준비 끝! 다음단계로~
}, new ResourcelessTransactionManager())
.build();
}