🧠 이번 주에 새로 배운 것
- event와 command의 개념과 차이점을 새롭게 공부하였습니다.
- @TransactionalEventListener의 before_commit, after_commit의 흐름과 사용시 장단점을 알게 되었습니다.
- Spring Application Event는 내부 이벤트 발행이며, 하나의 애플리케이션 안에서 물리적 트랜잭션을 분리하는 목적이 주된 이유일때 효과가 크다는 것을 배웠습니다.
💭 이런 고민이 있었어요
- 어떤 비즈니스를 이벤트 발행할까 하는 고민이 있었습니다. 실무에서의 선택 기준도 궁금하였습니다.
- 사용자 활동 로깅을 이벤트 발행하고 있었습니다. 이를 이벤트 체이닝으로 구성할지 이벤트 발행을 하는 계층에서 같이 발행할지 고민했습니다.
- 이벤트 코드 배치를 어떻게 할지 고민했습니다. EventListener는 interfaces 계층, Event는 domain 계층에 생성하였습니다.
💡 앞으로 실무에 써먹을 수 있을 것 같은 포인트
- @TransactionalEventListener before_commit보단 after_commit + @async 조합으로 맛있게(?) 적용할 대상을 찾아서 사용해보려고 합니다.
- eventListenr의 위치도 interfaces이기 때문에 controller처럼 로직이 있으면 안됩니다. application 계층 혹은 domain 계층에 위임을 해야 합니다.
🤔 아쉬웠던 점 & 다음 주에 해보고 싶은 것
- 구현에 치중하느라 테스트 코드를 꼼꼼하게 작성하지 못했습니다.
- 코드가 깔끔한 느낌을 받지 못했습니다. 구현도 중요하지만 가독성도 챙겨야 겠습니다.