Spring으로 개발을 하다 보면 이런 요구사항을 마주칠 때가 있습니다."비즈니스 로직이 실패하면 데이터는 Rollback 되어야 한다. 하지만, 그 실패 원인(로그)은 DB에 저장(Commit) 되어야 한다."언뜻 보면 간단해 보이지만, Spring의 트랜잭션 전파(Propagation) 속성을 정확히 이해하지 못하면 로그까지 같이 롤백되어 사라지는 난관에 봉착하게 됩니다.오늘은 이 문제를 해결하는 가장 깔끔한 방법을 정리해 봅니다.1. 문제 상황다음과 같은 서비스 로직이 있다고 가정해 봅시다.@Service@RequiredArgsConstructorpublic class MyService { private final FailHistoryRepository failHistoryRepository;..