Spring ApplicationEventPublisher로 이벤트 처리하는 방법
개요 일반적으로 데이터베이스와 연결된 상황에서 코드를 작업할 때 일관성을 위해 트랜잭션을 걸어서 사용한다. (@Transactional) 만약 아래와 같은 코드가 있다고 가정해보자. @Service public class RoomService { @Transactional public void createRoom() { // 1. 룸 생성 // 2. 메일 전송 코드(외부 시스템) // 3. 유저 정보를 가져와서 소유한 룸의 개수 + 1 } } 주석을 보면 알겠지만, DB영속화를 하는 작업은 룸 생성/유저 소유 룸 개수+1 총 2개의 작업이 있다. 나머지 하나는 외부 시스템을 통해 메일을 전송한다. 1, 3번의 경우 @Transactional을 통해 하나의 트랜잭션으로 묶여있기에 둘 중 하나라도 오류가 발..