-
Event Publisher / Event ListenerSpring 2023. 7. 4. 03:24
사용 이유: 의존성 줄이기 위함
Spring Event 구성
- Event Class
- Event Publisher
- Event Listener
Event Class
public class OrderedEvent { private String productName; public OrderedEvent(String productName) { this.productName = productName; } public String getProductName() { return productName; } }
Event Publisher
@Slf4j @Service public class OrderService { ApplicationEventPublisher publisher; public OrderService(ApplicationEventPublisher applicationEventPublisher) { this.publisher = applicationEventPublisher; } public void order(String productName) { //주문 처리 log.info(String.format("주문 로직 처리 [상품명 : %s]", productName)); publisher.publishEvent(new OrderedEvent(productName)); } }
- ApplicationEventPublisher 의존성 주입
- publishEvent() 를 통해 생성된 이벤트 객체 넣어줌
Event Listener
@Slf4j @Component public class OrderedEventListener { @EventListener public void sendPush(OrderedEvent event) throws InterruptedException { log.info(String.format("푸시 메세지 발송 [상품명 : %s]", event.getProductName())); } @EventListener public void sendMail(OrderedEvent event) throws InterruptedException { log.info(String.format("메일 전송 [상품명 : %s]", event.getProductName())); } }
- @EventListener를 통해 발생하는 이벤트 캐치 가능
🕊️ @EventListener vs @TransactionalEventListener
@EventListener는 호출 시점에 바로 실행됨 => 결과에 상관없이 호출되는 시점에 바로 진행됨
@TransactionalEventListener는 트랜잭션이 커밋이나 롤백되는 시점에 이벤트가 실행
👉 동작하는 메서드를 트랜잭션으로 묶어서 처리하는 경우 트랜잭션의 상태에 따라 발생하는 이벤트를 처리해주는 이벤트 리스너이기 때문에 이벤트 처리가 필요한 로직에서 트랜잭션을 적용해야 하는 경우 사용
spring 이벤트 사용하기(event publisher, event listener) (tistory.com)
spring 이벤트 사용하기(event publisher, event listener)
최근 프로젝트에서 'Spring Event'를 사용하게 되면서 정리한 내용입니다. 아래 내용에서 자세하게 볼 수 있겠지만 Spring Framework 4.2부터 스프링 이벤트의 사용이 간편해졌는데요. 기본적인 적용은
wildeveloperetrain.tistory.com
Spring Event, @TransactionalEventListener 사용하기 (tistory.com)
Spring Event, @TransactionalEventListener 사용하기
@TransactionalEventListener 사용하기 및 propagation.REQUIRES_NEW spring framework 4.2부터 스프링 이벤트의 사용이 간편해졌는데요. 지난 포스팅에서 spring event를 사용하는 이유와 @EventListener를 통한 기본적인 이
wildeveloperetrain.tistory.com
'Spring' 카테고리의 다른 글
Github Actions + Git Submodule로 application.yml 관리하기 (0) 2024.04.10 [Spring Security] kakao 소셜 로그인 (0) 2023.11.21 [Test Code] @NotBlank 테스트 코드 작성 방법 (0) 2023.07.03 SecurityConfig - SecurityFilterChain (0) 2022.11.13 [Querydsl] BooleanBuilder과 BooleanExpression (0) 2022.08.26