유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

[10분 테코톡] 멍구의 스프링@EventListener와 @TransactionalEventListener

우아한테크

2025. 9. 5.

0

#backend
  • 스프링 이벤트는 애플리케이션 내에서 느슨한 결합과 관심사 분리를 돕는 도구로 활용될 수 있다. 🧩
  • @EventListener는 이벤트 발생 시 즉시 실행되지만, 트랜잭션의 성공 여부와 관계없이 실행되는 문제점이 있다. 💥
  • @TransactionalEventListener는 트랜잭션의 커밋 시점 이후에 실행되도록 제어하여 데이터 정합성을 높일 수 있다. ✅
  • @TransactionalEventListenerAFTER_COMMIT, AFTER_ROLLBACK 등 다양한 속성을 통해 실행 시점을 세밀하게 조정할 수 있다. ⚙️
  • 이벤트 로직이 실패해도 비즈니스 로직에 영향이 없다면 @EventListener를, 트랜잭션 성공 후 실행되어야 한다면 @TransactionalEventListener를 사용한다. 🤔
  • 스프링 이벤트는 단일 애플리케이션 내에서만 유효하며, 메시지 유실 가능성이 존재한다. ⚠️
  • 높은 신뢰도와 확장성이 필요한 서비스라면 메시지 브로커를 사용하는 이벤트 시스템을 고려해야 한다. 🚀
  • ApplicationEventPublisher를 통해 이벤트 객체를 발행하고, ApplicationEventMulticaster를 통해 리스너에 전달한다. 📣
  • 이벤트 객체는 간단한 POJO(Plain Old Java Object) 형태의 DTO로 구현하는 것이 일반적이다. 📦
  • @Order 애너테이션을 사용하여 이벤트 리스너의 실행 순서를 지정할 수 있다. 🔢

Recommanded Videos