Skip to content

ㅇㅇ - #122

Open
wlsh44 wants to merge 23 commits into
fix/92from
develop
Open

ㅇㅇ#122
wlsh44 wants to merge 23 commits into
fix/92from
develop

Conversation

@wlsh44

@wlsh44 wlsh44 commented Apr 2, 2026

Copy link
Copy Markdown
Owner

No description provided.

wlsh44 added 23 commits May 18, 2023 17:11
* feat: user 도메인 추가 [#1]

* chore: 설정 파일 properties에서 yml로 변경 [#1]

* chore: gitignore 수정 [#1]

* feat: OAuth 로 리다이렉트하는 uri 추가 [#1]

* feat: google oauth client 추가 [#1]

* test: 인증 redirect uri 생성 테스트 추가 [#1]

* refactor: 소셜 인증 redirect 메서드 이름 변경 [#1]

* feat: id token 가져오는 기능 추가 [#1]

* test: id token 가져오는 기능 테스트 코드 추가 [#1]

* feat: id token에서 유저 정보 가져오는 기능 추가 [#1]

* fix: json 매핑 오류 수정 [#1]

* test: id token에서 유저 정보 추출 테스트 코드 추가 [#1]

* refactor: id token 이미지 받는 기능 제거 및 id token 받는 dto 이름 변경 [#1]

* feat: id token의 정보로 유저 엔티티 만드는 기능 추가 [#1]

* test: id token 정보로 유저 엔티티 만드는 기능 테스트 코드 추가 [#1]

* feat: jwt 토큰 생성 및 파싱 기능 추가 [#1]

* test: jwtProvider 테스트 코드 추가 [#1]

* refactor: User 도메인 이름 Member로 변경 [#1]

* chore: jwt 의존성 추가 [#1]

* feat: 로그인 service 추가 [#1]

* chore: gitignore 수정 [#1]

* test: fixture 추가 및 로그인 service 테스트 코드 추가 [#1]

* test: 테스트 코드 fixture 로 변경 [#1]

* feat: 로그인 controller 추가 [#1]

* refactor: user 패키지 이름 member로 변경 [#1]

* feat: 유저 인증 인터셉터 기능 추가 [#1]

* test: 인증 헤더 파싱 테스트 코드 추가 [#1]

* feat: 예외 관련 처리 구체화 및 advice 추가 [#1]

* test: controller 테스트 코드 추가 [#1]

* refactor: member 도메인 이름 변경 [#3]

* refactor: 예외 구조 변경 [#3]

* fix: auth transaction 추가 [#1]

* feat: 로컬 이미지 저장 기능 추가 [#3]

* feat: 피드 생성 service 기능 추가 [#3]

* chore: 개발용 초기화 sql 추가 [#3]

* test: 피드 생성 service 테스트 코드 추가 [#3]

* fix: 이미지 저장 안되는 버그 수정 [#3]

* chore: gitignore 수정 [#3]

* feat: 피드 저장 controller 추가 [#3]

* test: controller 단위 테스트 용 super class 추가 및 fixture 수정 [#3]

* test: 이미지 업로드 단위 테스트 추가 [#3]

* chore: memberRepository 패키지 위치 변경 [#3]

* style: 안 쓰는 코드 제거 [#3]

* feat: 피드 수정 기능 추가 (#6)

* test: authControllerTest 단위 테스트로 변경

* feat: 피드 수정 service 추가

* test: 피드 관련 테스트 코드 추가

Closed #5

* feat: 팔로우 언팔로우 기능 추가 (#8)

* feat: 팔로우기능 service 추가

* test: 팔로우 service 테스트 코드 추가

* feat: 팔로우 controller 추가

* feat: 언팔로우 기능 service 추가

* test: 언팔로우 serivce 테스트 코드 추가

* feat: 팔로우/언팔로우 controller 추가

* test: 팔로우/언팔로우 controller 테스트 코드 추가

* feat: 피드 수정 기능 추가 (#9)

* test: authControllerTest 단위 테스트로 변경

* feat: 피드 수정 service 추가

* test: 피드 관련 테스트 코드 추가

* feat: 피드 수정 controller 추가

* test: 피드 수정 controller 테스트 코드 추가

* feat: 피드 삭제 기능 추가 (#11)

* feat: 피드 삭제 기능 추가

* test: 피드 삭제 테스트 코드 추가

* feat: 댓글 생성 기능 추가 (#13)

* feat: 댓글 생성 기능 service 추가

* test: 댓글 생성 service 테스트 코드 추가

* feat: 댓글 생성 controller 추가

* test: 댓글 생성 controller 테스트 코드 추가

* fix: 댓글 양방향 관계 추가 및 삭제 시 함께 삭제 되도록 수정 (#16)

* 피드 게시물 이름 구분 (#23)

refactor: 피드 게시물 이름 구분

* 게시글 업로드 리팩터링 (#25)

* refactor: 게시글 업로드 리팩터링

* refactor: 게시글 피드 이름 변경

* test: 테스트 코드를 위한 기능 추가

* refactor: 댓글 생성 리팩터링 (#27)

* refactor: 댓글 생성 검증 위치 이동

* refactor: 생성자 수정 및 양방향 매핑 추가

* refactor: 피드 게시글 이름 변경

* test: 테스트 깨지는 부분 disable 및 수정

* fix: 댓글 생성 공백 제거 후 내용 없으면 예외 처리

* test: 댓글 생성 테스트 코드 추가

* feat: 댓글 삭제 기능 추가 (#29)

* feat: 댓글 작성자 검증 기능 추가

* test: 댓글 작성자 검증 테스트 코드 추가

* refactor: 이름 member에서 author로 구체화

* test: 피드 게시글 이름 변경

* feat: 댓글 삭제 service 추가

* test: 댓글 삭제 service 테스트 코드 추가

* feat: 댓글 삭제 controller 추가

* test: 댓글 삭제 controller 테스트 코드 추가

* refactor: 컨트롤러 관련 리팩터링 (#31)

* test: 컨트롤러 테스트 부분 토큰 검증 추가

* refactor: 피드 게시글 이름 변경

* refactor: 필요 없는 응답 제거

* test: 테스트 코드 컨트롤러 응답 부분 수정

* refactor: 예외 구조 간단하게 변경

* modify: 댓글 생성 API URL 변경 (#33)

* modify: 변경에 맞게 댓글 생성 API url 수정

* test: 테스트 코드 수정

* refactor: 팔로우/언팔로우 리팩터링 (#35)

* refactor: 팔로우 도메인 패키지 이동

* refactor: follow 도메인 분리

* fix: mappedBy 잘못 되어있던 부분 수정

* refactor: 팔로우 검증 기능 도메인으로 이동

* test: 팔로우 테스트 코드 수정

* test: 팔로우 테스트 코드 추가

* refactor: 언팔로우 리팩터링

* test: 언팔로우 테스트 코드 수정

* modify: 팔로우 API URL 변경

* feat: 프로필 조회 기능 추가 (#37)

* feat: member에 followers 필드 추가

* refactor: nickname 이름 수정

* feat: 유저 프로필 조회 service 추가

* test: member 도메인 테스트 추가

* test: 프로필 조회 테스트 코드 추가

* feat: 프로필 조회 controller 추가

* test: profile 조회 테스트 코드 추가

* feat: 좋아요 추가/취소 기능 추가 (#39)

* fix: 프로필 URL 수정

* feat: like 도메인 추가

* feat: 좋아요 serivce 기능 추가

* feat: 좋아요 테스트 코드 추가

* feat: 좋아요 controller 추가

* test: 좋아요 테스트 코드 추가

* feat: 좋아요 취소 service 추가

* test: 좋아요 취소 테스트 코드 추가

* feat: 좋아요 취소 controller 추가

* test: 좋아요 취소 테스트 코드 추가

* feat: 특정 게시글 조회 기능 추가 (#41)

* refactor: 생성 날짜 필드 이름 변경

* feat: post 도메인에 시간 엔티티 상속 추가

* feat: 게시글 조회 service 추가

* test: 게시글 조회 테스트 코드 추가

* feat: 게시글 작성자 기능 추가

* refactor: 게시글 작성자 검증 리팩터링

* style: 안 쓰는 코드 제거

* feat: 게시글 조회 controller 추가

* test: 게시글 조회 테스트 코드 추가

* feat: 피드 조회 기능 추가 (#43)

* chore: ignore 추가

* feat: 유저 피드 조회 service 추가

* test: 유저 피드 조회 테스트 코드 추가

* feat: 유저 피드 조회 controller 추가

* test: 유저 피드 조회 테스트 코드 추가

* fix: 페이징에 필요한 데이터 추가

* test: 페이징 부분 테스트 추가

* feat: 최신 피드 조회 service 추가

* test: 최신 피드 조회 테스트 코드 추가

* feat: 최신 피드 조회 controller 추가

* test: 최신 피드 조회 테스트 코드 추가

* refactor: 게시글 Command Query 분리, 작성자 서브 도메인 분리, 테스트 동등성 검증 수정 (#45)

* refactor: Author 서브 도메인 분리

* fix: 게시글 조회 API 수정

* style: 안 쓰는 코드 제거

* refactor: 게시글 queryService 분리

* test: 테스트 코드 분리

* refactor: 게시글 조회와 검증 중복 제거

* refactor: 게시글 commandService 이름 변경

* refactor: 댓글 작성자 분리

* fix: 작성자가 아닐 경우 예외 다르게 표시 되도록 수정

* refactor: 메서드 및 예외 이름 구체화

* test: 게시글 조회 테스트 전체 값 검증으로 변경

* fix: 유저 피드 게시글 최신 순서로 되도록 수정

* test: 유저 피드 조회 테스트 전체 값 검증으로 변경

* test: 최신 피드 조회 테스트 전체 값 검증으로 변경

* modify: 댓글 API url 수정 (#47)

* feat: 특정 게시글의 댓글 조회 기능 추가 (#49)

* refactor: 댓글 CommandService로 이름 변경

* style: 코드 순서 수정

* feat: 게시글 댓글 조회 service 추가

* test: 게시글 댓글 조회 테스트 코드 추가

* refactor: response dto 위치 수정

* style: 안 쓰는 코드 제거

* fix: 조회 API 생성 날짜 시간까지 반환하도록 수정

* �feat: 게시글 이미지 s3 저장 기능 추가 (#52)

* chore: aws 의존성 추가

* feat: s3 이미지 업로드 기능 추가

* refactor: 로컬 파일 저장 기능 패키지 수정

* feat: 게시글 이미지 s3 저장 기능 추가

* style: 필요 없는 코드 제거

* fix: 스프링 자동 주입을 위한 s3 키 이름 변경

* test: 테스트 깨지는 부분 수정

* test: S3PostImageStore 테스트 코드 추가

* test: s3 이미지 저장 코드 추가

* test: 게시글 등록 테스트 코드 예외 추가

* style: 안 쓰는 코드 제거

* feat: 멤버 정보 조회 기능 추가 (#54)

* refactor: memberQueryService로 이름 변경

* feat: 멤버 정보 조회 service 추가

* test: 멤버 정보 조회 테스트 코드 추가

* feat: 멤버 정보 조회 controller 추가

* test: 멤버 정보 조회 테스트 코드 추가

* feat: 유저 정보 수정 기능 추가 (#57)

* feat: 멤버 정보 수정 기능 추가

* test: fixture 추가 및 이름 수정

* test: 멤버 정보 수정 테스트 코드 추가

* refactor: imageStore 예외 리팩터링

* feat: s3프로필 저장 기능 추가

* feat: 유저 정보 수정 service 추가

* test: 유저 정보 수정 테스트 코드 추가

* test: s3프로필 저장 테스트 코드 추가

* test: 유저 정보 수정 controller 추가

* test: 유저 정보 수정 테스트 코드 추가

* test: 게시글 관련 fixture 수정

* feat: 유저 닉네임 검색 기능 추가 (#59)

* feat: 유저 닉네임으로 검색 service 추가

* test: 테스트 시 유저 초기화 하는 부분 개별 테스트로 분리

* test: 유저 닉네임 검색 테스트 코드 추가

* feat: 유저 닉네임 검색 controller 추가

* test: 유저 닉네임 검색 테스트 코드 추가

* style: 안 쓰는 코드 제거

* feat: 알람 기능 추가 (#61)

* feat: 팔로우시 발생하는 알람 도메인 추가

* feat: 팔로우 알람 이벤트 추가

* feat: 알람에 text 프로퍼티 추가

* feat: 팔로우시 event 발생시키는 기능 추가

* fix: 알람 도메인 하나로 통합 및 팔로잉 되는 유저에게 알람 가도록 수정

* chore: fcm 의존성 추가

* fix: 알람 전송 인터페이스 수정

* feat: fcm 알람 기능 추가

* feat: 유저 device 도메인 추가

* chore: gitignore 추가

* chore: fcmConfig 실행 프로필 및 테스트 설정값 추가

* feat: 비동기 thread pool 설정 추가

* fix: 쿼리 수정 및 device fetch join 대상 수정

* test: 팔로우 이벤트 테스트 코드 추가

* chore: gitignore 추가

* remove: 개발용 파일 이미지 저장 기능 제거

* test: 테스트 컴파일 되도록 수정

* test: 비동기로 인한 테스트 독립성 깨짐 수정

* feat: 게시글 작성 알람 이벤트 추가

* refactor: 공통 Infra 패키지 생성

* refactor: 알람 공통 infra 리팩터링

* refactor: 이벤트 각 도메인으로 패키지 변경

* refactor: 이벤트 전달 방식 dto로 변경

* test: 테스트 코드 수정 및 추가

* feat: 알람 조회 기능 추가 (#63)

* style: 안 쓰는 코드 제거

* refactor: 변수 이름 변경

* feat: 알람 조회 service 추가

* test: 알람 조회 테스트 코드 추가

* refactor: 이름 형식 맞춤

* feat: 알람 조회 controller 추가

* test: 알람 조회 테스트 코드 추가

* refactor: 알람 전송, 저장 분리 리팩터링 (#66)

* refactor: asyncConfigure 구현하는 방식으로 설정 변경

* refactor: transaction 제거

* feat: �알람 읽기 기능 추가 (#68)

* feat: 알람 도메인 읽기 기능 추가

* test: 알람 읽기, 받은 유저 검증 테스트 코드 추가

* refactor: 알람 받은 사람 receiver로 이름 변경

* feat: 알람 읽기 service 추가

* test: 알람 읽기 테스트 코드 추가

* feat: 알람 읽기 controller 추가

* test: 알람 읽기 테스트 코드 추가

* feat: 디바이스 토큰 추가 기능 추가 (#70)

* feat: 디바이스 토큰 추가 기능 추가

* test: 디바이스 토큰 추가 테스트 코드 추가

* chore: CI/CD 워크플로우 추가 (#71)

* chore: ci 워크플로우 추가

* chore: cd 워크플로우 추가

* chore: deploy.sh 추가

* chore: 도커 관련 파일 추가

* chore: gitignore 추가

* chore: docker 레포 이름 수정

* chore: dockerfile 실행 경로 수정

* Revert "chore: dockerfile 실행 경로 수정"

This reverts commit 0d53422.

* chore: dockerfile 위치 수정

* chore: dockerfile 수정

* fix: prod환경에서 firebasekey 외부 파일 읽도록 수정

* refactor: ManyToOne fetchType Lazy로 변경 (#74)

* refactor: ManyToOne fetchType Lazy로 수정

* chore: test osiv false 설정

* feat: request valid 추가 (#77)

* refactor: ManyToOne fetchType Lazy로 수정

* chore: test osiv false 설정

* chore: spring validation 추가

* feat: device token valid 추가

* feat: member update valid 추가

* feat: new comment valid 추가

* feat: post update valid 추가

* feat: post upload valid 추가

* feat: valid advice 추가

* fix: 보낼 메시지 없는 경우 안보내도록 수정 (#78)

fix: 보낼 메시지 없는 경우 안보내도록 수정

* refactor: 예외 관련 리팩터링 (#81)

* feat: 최상위 에러 처리 advice 추가

* refactor: 클라이언트 관련 예외 레벨 info 수준으로 변경

* fix: 보낼 메시지 없는 경우 안보내도록 수정 (#78)

fix: 보낼 메시지 없는 경우 안보내도록 수정

* refactor: 클라이언트 관련 예외 레벨 info 수준으로 변경

* feat: 최상위 예외 처리 기능 추가

* chore: develop 관련 코드 및 파일 추가 (#82)

* chore: ngrinder docker compose 파일 추가

* chore: deploy 관련 스크립트 이동

* chore: 개발용 sql 추가

* feat: develop 용 코드 추가

* refacotr: 좋아요 예외 구체적으로 변경

* refactor: 타임라인 defaultPageable 적용

* feat: health check API 추가 (#84)

* feat: heath check API 추가

* chore: deploy스크립트 health check url 수정

* fix: health check 관련 오타 및 인증 부분 수정

* refactor: 네이밍, 서브 도메인 클래스 분리 등 리팩터링 (#86)

* refactor: 패키지 이름 변경

* refactor: 생성자 접근 제한자 수정

* refactor: 회원가입 접근 제한자 수정 및 Transaction 제거

* refactor: jwtProvider 패키지 변경

* style: 코드 정리

* fix: base time entity 빠진 부분 추가

* fix: Long 타입에 not empty로 된 부분 수정

* refactor: followings casacade 변경

* refactor: 필요 없는 request 파라미터 제거

* refactor: nickname에서 username으로 변경

* style: 안 쓰는 코드 제거

* test: 테스트 꼬인 부분 수정

* refactor: response 정적 팩터리 메서드 이름 통일

* refactor: 유저 social info와 detailed info 분리

* chore: prod DB 의존성 추가 및 배포 스크립트 수정 (#88)

* chore: sql 스크립트 추가 및 수정

* refactor: member 생성시 기본 값 추가

* chore: prod db 의존성 추가

* chore: deploy 스크립트 잘못된 부분 수정

* fix: 유저 생성 안 되는 오류 수정

* chore: 배포 관련 스크립트 추가 및 수정
fix: cd 스크립트 경로 수정
* refactor: 좋아요, 팔로우 검증 쿼리 리팩터링 (#91)

* refactor: 좋아요 검증 부분 도메인에서 분리

* refactor: 피드 게시글 좋아요 여부 확인 기능 리팩터링

* fix: read 디비 칼럼 이름 변경

* chore: dml 테이블 이름 수정

* refactor: 팔로우 여부 체크 기능 service로 이동

* fix: cd 스크립트 경로 수정 (#93)

fix: cd 스크립트 경로 수정
Revert "refactor: 타임라인 조회 시 게시글 이미지 N + 1 문제 해결 (#96)"

This reverts commit c40d59c.
* chore: ddl 스크립트 수정

* refactor: 게시글 조회 시 이미지 N + 1 조회 쿼리 수정
* style: 안 쓰는 파라미터 및 코드 제거

* refactor: findById로 변경

* refactor: 첫 번째 사진 가져오는 기능 추상화
* chore: readme 초안 작성

* chore: 설계 이미지 추가

* chore: readme 사용 기술 세분화

* chore: 순서 변경
* refactor: sonarLint 이용한 코드 스멜 제거

* test: 테스트 코드 코드 스멜 제거

* test: 구현 계획 없는 기능 테스트 코드 제거

* test: 게시글 수정 테스트 코드 수정 및 disable 제거
* chore: createdAt, lastModifiedAt default 설정 추가

* chore: post dml 수정
* refactor: post에서 like 연관 관계 제거 및 likeCount 칼럼 추가

* refactor: like 패키지 분리

* fix: 좋아요 눌렀을 시 동시성 문제 해결

* test: 좋아요 동시성 관련 테스트 코드 추가

* chore: ddl post likeCount 및 like unique 제약 추가

* chore: 테스트용 like 더미데이터 추가
* refactor: 개발용 이미지 저장 가짜 객체 추가

* chore: ngrinder angent 메모리 설정
* refactor: 좋아요 수 올리는 방식 이벤트로 리팩터링

* style: 안 쓰는 코드 제거

* test: 테스트 코드 수정

* test: 테스트 깨지는 부분 수정
* chore: redis 의존성 추가

* feat: 레디스 캐시 관련 설정 추가

* feat: redisService 추가

* refactor: like 캐시 적용 리팩터링

* feat: like 캐시 배치 기능 추가

* style: 필요 없는 코드 제거

* refactor: redisTemplate 공통 객체 사용하도록  리팩터링

* refactor: likecount 제거 및 캐시 value 값 createdAt으로 변경

* chore: gitignore 수정

* refactor: 배치 쿼리 수정

* style: 안 쓰는 코드 제거

* chore: batch insert를 위한 likes foreign key 제거 및 post likeCount 제거

* refactor: post 조회 시 likeCount 쿼리 추가

* chore: 테스트용 embedded redis 의존성 추가

* test: redis 관련 테스트 코드 및 좋아요 테스트 코드 수정
* refactor: 안 쓰는 cacheManager 설정 부분 제거

* refactor: 메서드 static 제거

* style: 코드 정리

* refactor: 변수 이름 및 메서드 정리

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a Redis-based caching layer for the 'like' functionality to improve performance, including a batch job for synchronizing likes with the RDB. The review identified several critical performance issues, such as N+1 query problems in the feed service and batch job, as well as data consistency concerns in the like removal logic. Additionally, there were suggestions to improve code cleanliness by removing unused imports and commented-out code, and to use more robust null-checking mechanisms.

@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
String key = keys.get(i);
Timestamp createdAt = getCreatedAt(key);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

배치 작업 중 루프 내에서 getCreatedAt(key)를 호출하면 매번 Redis에 개별적으로 접근하게 되어 성능 저하를 유발합니다. redisTemplate.opsForValue().multiGet(keys)를 사용하여 필요한 데이터를 한 번에 가져오는 방식으로 개선이 필요합니다.

Comment on lines +47 to +57
public void removeByMemberIdAndPostId(Long memberId, Long postId) {
String key = redisService.makeKey(RedisPrefix.LIKE_PUSH, memberId, postId);
Boolean cacheDelete = redisTemplate.delete(key);
if (isCacheDeleted(cacheDelete)) {
likeJpaRepository.deleteByMemberIdAndPostId(memberId, postId);
}
}

private boolean isCacheDeleted(Boolean cacheDelete) {
return Boolean.FALSE.equals(cacheDelete);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

현재 로직은 캐시 삭제에 성공하면 DB 삭제를 수행하지 않습니다. 하지만 배치 작업이 이미 실행되어 데이터가 DB에 반영되었을 가능성이 있으므로, 캐시 존재 여부와 상관없이 DB에서도 삭제 명령을 수행해야 데이터 정합성을 유지할 수 있습니다. 또한 더 이상 사용되지 않는 isCacheDeleted 메서드도 함께 제거하는 것이 좋습니다.

    @Override
    public void removeByMemberIdAndPostId(Long memberId, Long postId) {
        String key = redisService.makeKey(RedisPrefix.LIKE_PUSH, memberId, postId);
        redisTemplate.delete(key);
        likeJpaRepository.deleteByMemberIdAndPostId(memberId, postId);
    }

return myFeedSlice.getContent().stream()
.map(post -> PostResponse.from(post, member, likeRepository.existsByMemberIdAndPostId(memberId, post.getId())))
.collect(Collectors.toList());
.map(post -> PostResponse.from(post, isMemberLikePost(memberId, post), likeRepository.countByPostId(post.getId())))

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

스트림 내부에서 isMemberLikePostlikeRepository.countByPostId를 호출하면 포스트 개수만큼 추가적인 Redis/DB 조회가 발생하는 N+1 문제가 발생합니다. 특히 피드 조회는 빈번하게 호출되므로, 좋아요 여부와 개수를 벌크 쿼리나 캐싱을 통해 한 번에 가져오도록 최적화가 필요합니다.

public class RedisService {

private static final int SCAN_COUNT = 10;
private static final String KEY_FORMAT = ":%s";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

KEY_FORMAT:으로 시작하고 RedisPrefix의 접두사들도 :으로 끝나는 경우(예: likePushed:), 생성된 키에 likePushed::memberId와 같이 중복된 구분자가 포함됩니다. 이는 의도치 않은 결과일 수 있으며 키 구조를 불필요하게 복잡하게 만듭니다. 접두사나 포맷 중 한 곳에서 :을 제거하여 일관된 구분자를 사용하도록 개선하는 것이 좋습니다.


private RedisConnection getRedisConnection() {
RedisConnectionFactory connectionFactory = redisTemplate.getConnectionFactory();
assert connectionFactory != null;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

프로덕션 환경에서는 assert 문이 비활성화될 수 있으므로, connectionFactory가 null이 아님을 보장하기 위해 java.util.Objects.requireNonNull()을 사용하는 것이 더 안전합니다.

Suggested change
assert connectionFactory != null;
RedisConnectionFactory connectionFactory = java.util.Objects.requireNonNull(redisTemplate.getConnectionFactory());

import java.util.List;
import java.util.Optional;

import static com.example.sns.common.infrastructure.redis.RedisConst.LIKE_EXPIRED_SECONDS;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

사용되지 않는 import 문입니다.

Comment on lines +90 to +97
// public int getLikeCount() {
// return likeCount;
// }

// public void decreaseLikeCount() {
// assert likeCount != 0;
// likeCount--;
// }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

사용하지 않는 주석 처리된 코드는 제거하여 코드의 가독성을 높이는 것이 좋습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant