최근에 프로젝트에서 개발자들이 배치 작업 중 에러가 발생해도 rollback이 되지 않는다는 문의가 들어왔다. 문제의 원인과 해결 방법을 찾아냈고, 그것을 기록해둘까 한다.원인 코드를 살펴보니 배치에서는 예외를 catch만 하고 throw는 하지 않고 있었다. 온라인 서비스에서는 예외를 throw하면 상위 계층(Controller, @ControllerAdvice 등)에서 받아서 후처리할 수 있지만, 배치는 예외를 throw하면 Step이 실패 처리되며 Job 실행이 중단되고 예외를 받아서 후처리해줄 곳이 없기 때문이다. 해결 방법 & 예시 코드 롤백되지 않는 코드@Slf4j@Componentpublic class SampleTasklet implements Tasklet { @Autowire..