@EventListener, @TransactionalEventListener 설에 따른 이벤트 동작 방식
·
Java & Spring
안녕하세요 이번 포스팅에서는 이벤트 리스너 어노테이션에 대해 다루고자 합니다. 도입하여 사용하게된 계기는 다음과 같았습니다.1. 메인 비지니스 로직과 알림과 같은 부가적인 로직의 분리 - 알림 발송에 대한 처리2. 분리를 통한 결합도 낮춤 및 확장 가능한 설계3. @Async 도입을 통해 비동기 처리로 퍼포먼스 향상 그럼 스프링에서 제공하는 @EventListener, @TransactionalEventListener를 통해 어떤 경우에 어떻게 동작하는지 정리해 보겠습니다. 1. @EventListener이벤트를 publish 해주는 곳에서 PostCreatedEventFail 타입으로 발행해주면 해당 타입으로 리스너가 구성되어 있는 메소드는수행되게 됩니다EventListener 안에 별도로 class ..
Java Enum 다형성으로 Notification 처리 리팩토링하기 - 조건문 없는 전략 설계
·
Java & Spring
이번 포스팅에서는 Java 의 Enum을 통해 분기처리 없이 알림 타입에 따른 전송을 구현해 보고자 합니다. 실제 프로젝트를 진행하면서 Email, Slack, SMS 등 상황에 따라 알림을 다른 플랫폼으로 전송해야 될 일이 있었습니다. 기존에는 그런 상황에서 if ... else 구문으로 보내야되는 알림 타입에 대해 처리했고 만약 알림 타입이 추가된 경우엔 또 다시 else if 를 추가하는 등의 작업이 필요했습니다. 하지만, 그렇게 하다보니 코드도 너무 복잡해지고 실수로 작업해야되는 알림 타입에 다른 로직을 추가 하는 경우도 발견했습니다. 그래서 이를 해결하기 위한 방법을 찾던 중 Java 의 Enum 을 활용하면 해결을 할 수 있다는 힌트를 얻을 수 있었고 실제 적용을 해보니 코드도 정말 깔끔해지고..