본문 바로가기

Spring 꿀팁?들

@EventListener

사용 이유

의존성이 강한 로직들의 레이어들을 분리하기 위해서

예를 들어 배달 서비스의 배달하기 라는 비즈니스 로직을 실행할때 식당 서비스의 조리 완료하기 (뭔가 이상하긴 하지만)
라는 비즈니스 로직을 가져다가 써야된다면 배달 서비스 안에 식당 서비스를 의존성 주입하여서 사용해주는데 이렇게 된
다면 서로 의존성이 강해져버리는 안좋은 부작용이 생긴다.
이를 해결하기 위한게 @EventListener 이다.
그러면 대체 어떤 방식으로 해결을 한다는 것일까?
배달 서비스의 배달하기 로직 -> 이벤트 발행 -> 식당 서비스의 조리 완료하기 로직 순으로 구성을 한다면 배달 서비스는
식당 서비스의 비즈니스 로직 수정 여부에 따른 자체 코드의 수정이 필요가 없어진다.

사용

1.우선 이벤트를 발행하는 publisher 쪽에서는 ApplicationEventPublisher가 선언되어있어야 합니다.
2.이벤트 정보를 담아서 전달해줄 dto가 필요합니다.
3.EventHandler에 적절한 이벤트리스너를 등록해줍니다.

이렇게 3가지 단계를 거쳐 구성한다면 이벤트 기반 프로그래밍이 가능해지며 특히나 Spring의 도움없이 자체적인 POJO만으로도
구현이 된다는 것이 큰 장점이다.