Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add notification agreement field in user-info-dto #131

Merged
merged 3 commits into from
Oct 20, 2023

Conversation

inh2613
Copy link
Member

@inh2613 inh2613 commented Oct 20, 2023

PR Type

  • 기능 추가
  • 기능 삭제
  • 버그 수정
  • 테스트 코드 작성
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트
  • 문서 작성

Motivation

유효기간알림, 기프티콘 등록 성공/실패 여부 알림 등 정보성 알림에 대한 수신 동의 관리 필요성 대두

  • 회원 가입 시 기본적으로 devicetoken을 저장
  • 마이페이지에서 알림 수신 거부 시 -> devicetoken 삭제 API 호출

로 관리하기로 클라이언트와 협의함

Problem Solving

  • 내 정보 조회 API를 통해 해당 회원이 알림 동의 현황을 파악할 수 있도록 함

To Reviewer

정보성 알림과 광고성 알림 법률의 차이가 있다는 것을 파악했고, GH-301에 관련 자료 첨부하였습니다.

@inh2613 inh2613 added the 👮‍♂️ Auth 회원 및 인증에 관련된 라벨 label Oct 20, 2023
@inh2613 inh2613 self-assigned this Oct 20, 2023
@@ -34,6 +35,7 @@ public class UserService implements UserDetailsService {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
private final OAuthService oAuthService;
private final DeviceTokenRepository deviceTokenRepository;
Copy link
Member Author

@inh2613 inh2613 Oct 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

순환참조 문제(UserService와 DevicetokenService)가 발생해서 DeviceRepository를 두번 의존성 주입을 했습니다.

스프링 컨테이너는 싱글톤 범위로 빈을 관리하므로, DeviceTokenRepository는 하나의 인스턴스만 생성되고, 그 인스턴스가 DeviceTokenService 및 UserService에 주입된다고 하긴 해서 우선 이렇게 진행하긴 했는데, 이 방법 말고 어떻게 해결할 수 있을지 궁금합니다. (@Lazy 어노테이션 등의 방법 말고 설계를 처음부터 다시해야 하는지 등의 방법이 궁금합니다.)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 지난 번 순환 참조 문제가 발생했던 적이 있었습니다.

순환 참조 문제를 해결하기 가장 좋은 방법은 처음부터 잘 설계하자가 맞습니다. 하지만 이렇게 할 경우에는 작업 시간이 늘어나게 될 것 입니다.
@Lazy 어노테이션 또한 권장하는 방법은 아니라고 합니다. @Lazy 어노테이션은 빈의 생성 시기를 늦추는 것이지 근본적으로 순환 참조를 해결할 수는 없기 때문에(저는 임시 방편 정도로 생각하고 있습니다), 순환 참조가 발생하였을 때 이를 파악하는 시기를 늦출 뿐이라고 합니다.

예전에 제가 순환 참조를 해결하면서 작성했던 문서가 있는데 가볍게 읽어보시면 좋을 것 같습니다!

현재 구현해주신 코드가 개발 진행 속도를 고려한다면 어쩔 수 없는 선택이라고 생각합니다.

Copy link
Member

@jinlee1703 jinlee1703 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다.

Copy link
Member

@jinlee1703 jinlee1703 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다.

@@ -11,14 +11,18 @@
@Getter
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class UserInfoResponseDto {
private Long id;
Copy link
Member

@jinlee1703 jinlee1703 Oct 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P5 : id를 Dto에 추가하신 이유가 궁금합니다.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

클라이언트에서 요청하여 추가하였습니다. 슬랙 스레드에 댓글로 언급되어 있어서 확인 못 하셨나봅니다!

Copy link
Contributor

@seheon99 seheon99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다

@inh2613 inh2613 merged commit 73ec806 into develop Oct 20, 2023
2 checks passed
@inh2613 inh2613 deleted the feat/GH-302-notification-agreement branch October 20, 2023 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
👮‍♂️ Auth 회원 및 인증에 관련된 라벨
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants