Spring Event

2024-09-28

주로 클래스간의 느슨한 결합을 원할 때, 단일 책임 원칙을 적용하기 위해 사용된다.

예시

1. 유저가 회원가입을 진행한다.
2. 회원가입이 완료되면 유저에게 메일을 전송한다.

회원가입 서비스의 프로세스이다. ‘유저가 회원가입을 하는 것.’ ‘유저에게 메일을 보내는 것’이 두 동작은 책임의 주체도 다르고 만약 같은 클래스에서 모두 처리하면 단일 책임 원칙을 위반한 것이다.

그럼 당연히 별도의 클래스 ‘메일 전송 클래스’를 생성해서 처리를 한다.

하지만, ‘회원가입 클래스’에서 ‘메일 전송 클래스’를 강하게 의존하게 된다.

이게 무엇이 문제일까? 공부해보자.

이럴 경우에 이벤트라는 개념을 사용하는데,

1. 회원가입 완료시 회원가입 클래스에서 이벤트 발행
2. 메일 전송 클래스에서 이벤트 캐치 후 메일 전송

이런 프로세스로 동작하게 된다.

느슨한 결합도를 얻게 되었다. 하지만, 이게 좋은걸까?

이벤트 발행 패턴을 사용하게 되면 가독성도 안 좋아지고, 기술 뎁스가 늘어나고 시스템 복잡도만 늘리게 된다고 생각할 수 있다.

한 번 본인이 제대로 판단해보자.

어노테이션