관심있는 스터디 변경 알림

Yuri Lee·2020년 12월 8일
0

참여중인 스터디 변경 사항에 대한 알림

  • 스터디 소개를 수정 했을 때
  • 스터디 종료시
  • 스터디 팀원 모집 시작 / 중지

StudyService.java

eventPublisher 를 통해 event 를 던짐! 4개의 이벤트를 4곳에서 StudyUpdateEvent를 던지도록 하였음, 그리고 이에 대한 처리로 StudyEventListener을 구현하면 된다.

이벤트 리스너(event listener)

이벤트 리스너란 이벤트가 발생했을 때 그 처리를 담당하는 함수를 가리키며, 이벤트 핸들러(event handler)라고도 한다.

handleStudyUpdateEvent
스터디를 조회해 와야 하는데, 어떤 데이터를 조회해야 하는지 잘 생각해 봐야 한다. 알림을 보낼 대상이 스터디의 관리자들과 멤버들이다. 매니저와 멤버를 같이 가져오는 게 필요, 없으므로 구현 findStudyWithManagersAndMemebersById

EntityGraph 그래프를 만들 때 아래와 같이 매번 이름을 정의해서 만들었다. 사실 이렇게 할 필요가 없다.

Study.java

@NamedEntityGraph(name = "Study.withAll", attributeNodes = {	
        @NamedAttributeNode("tags"),	
        @NamedAttributeNode("zones"),	
        @NamedAttributeNode("managers"),	
        @NamedAttributeNode("members")})	
@NamedEntityGraph(name = "Study.withTagsAndManagers", attributeNodes = {	
        @NamedAttributeNode("tags"),	
        @NamedAttributeNode("managers")})	
@NamedEntityGraph(name = "Study.withZonesAndManagers", attributeNodes = {	
        @NamedAttributeNode("zones"),	
        @NamedAttributeNode("managers")})	
@NamedEntityGraph(name = "Study.withManagers", attributeNodes = {	
        @NamedAttributeNode("managers")})	
@NamedEntityGraph(name = "Study.withMembers", attributeNodes = {	
        @NamedAttributeNode("members")})	
@NamedEntityGraph(name = "Study.withTagsAndZones", attributeNodes = {	
        @NamedAttributeNode("tags"),	
        @NamedAttributeNode("zones")})

이 방법은 이 이름에 해당하는 EntityGraph를 자주 사용 혹은 여러 곳에서 사용할 때 쓰는 방법이다. 사실 우리는 이름에 해당하는 Entity를 한 곳에서만 각각 사용하고 있기 때문에 단순하게 변경해줘도 된다. 또한 기본 EntityGrap type이 FETCH이다.

좀더 general 한 createNotification method 이름으로 바꿔준다.

Test

스터디 변경을 해줌, 이번에는 알림이 리다이렉트만 헤도 보인다. (아이콘) 리다이렉트 되기 전에 Notification date를 넣음..

스터디 소개를 수정했다는 알림이 뜨는 것을 볼 수 잇다.


출처 : 인프런 백기선님의 스프링과 JPA 기반 웹 애플리케이션 개발
http://www.tcpschool.com/javascript/js_event_eventListenerRegister

profile
Step by step goes a long way ✨

0개의 댓글