Conversation
Walkthrough다수의 클래스에서 사용되지 않는 import를 제거하고, 사소한 포매팅을 정리했습니다. 영향 파일은 DTO(request/response), 엔티티, 리포지토리, 서비스 구현 및 컨트롤러 등입니다. 기능 로직과 공개 API 시그니처는 대부분 변경 없음입니다. 예외적으로 RecentSearchServiceImpl의 생성자에서 JwtTokenProvider 의존성이 제거되어 생성자 파라미터가 축소되었습니다. 그 외 서비스 구현, 유효성 검증 애노테이션, 메서드 시그니처, 제어 흐름에는 변화가 없습니다. Estimated code review effort🎯 2 (Simple) | ⏱️ ~10–15 minutes
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/main/java/com/mumuk/domain/search/service/RecentSearchServiceImpl.java (1)
45-51: NPE 위험: size(key)가 null일 때 'logSize==10' 비교에서 언박싱 NPE 발생opsForList().size(key)는 키가 없으면 null을 반환합니다. 현재 비교는 언박싱을 유발하여 NullPointerException 가능성이 있습니다. 또한 경계값 비교는 == 10 보다는 >= 10이 안전합니다.
다음 수정으로 NPE를 방지하고 경계값 비교를 보완해 주세요:
- Long logSize = redisTemplate.opsForList().size(key); - // 해당 key가 존재하지 않는 경우 발생하는 nullPointerException 방지 - - if (logSize==10) { - redisTemplate.opsForList().rightPop(key); - } // 최근 검색어는 10개까지! 그 이상은 내보냄 + Long logSize = redisTemplate.opsForList().size(key); + // 키가 없으면 size가 null이므로 NPE 방지 + if (logSize == null) { + logSize = 0L; + } + // 최근 검색어는 10개까지 유지 + if (logSize >= 10) { + redisTemplate.opsForList().rightPop(key); + }
🧹 Nitpick comments (1)
src/main/java/com/mumuk/domain/search/service/RecentSearchServiceImpl.java (1)
52-54: 간결화 제안: LPUSH 후 LTRIM으로 리스트 길이(10개) 보장선행 size 체크 대신 push 후 trim으로 일관되게 10개를 유지하면 코드가 단순해지고 경합 상황에서도 안전합니다. 위의 NPE 수정과 배타적으로 하나만 선택 적용해도 됩니다.
다음과 같이 변경을 고려해 주세요:
- // 검색어 저장 - redisTemplate.opsForList().leftPush(key,value); + // 검색어 저장 후 길이 10개로 트림 + redisTemplate.opsForList().leftPush(key, value); + redisTemplate.opsForList().trim(key, 0, 9);
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled
- Linear integration is disabled
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (15)
src/main/java/com/mumuk/domain/healthManagement/dto/request/HealthGoalRequest.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/dto/request/UserInfoRequest.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/dto/response/HealthGoalResponse.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/entity/HealthGoal.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/entity/UserInfo.java(1 hunks)src/main/java/com/mumuk/domain/healthManagement/repository/AllergyRepository.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/service/AllergyService.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/service/HealthGoalServiceImpl.java(0 hunks)src/main/java/com/mumuk/domain/healthManagement/service/UserInfoService.java(0 hunks)src/main/java/com/mumuk/domain/search/controller/SearchController.java(0 hunks)src/main/java/com/mumuk/domain/search/dto/request/SearchRequest.java(0 hunks)src/main/java/com/mumuk/domain/search/dto/response/SearchResponse.java(0 hunks)src/main/java/com/mumuk/domain/search/service/AutocompleteServiceImpl.java(0 hunks)src/main/java/com/mumuk/domain/search/service/RecentSearchServiceImpl.java(2 hunks)src/main/java/com/mumuk/domain/search/service/SearchServiceImpl.java(0 hunks)
💤 Files with no reviewable changes (13)
- src/main/java/com/mumuk/domain/healthManagement/service/UserInfoService.java
- src/main/java/com/mumuk/domain/healthManagement/dto/response/HealthGoalResponse.java
- src/main/java/com/mumuk/domain/search/controller/SearchController.java
- src/main/java/com/mumuk/domain/healthManagement/entity/HealthGoal.java
- src/main/java/com/mumuk/domain/healthManagement/service/AllergyService.java
- src/main/java/com/mumuk/domain/healthManagement/dto/request/UserInfoRequest.java
- src/main/java/com/mumuk/domain/healthManagement/service/HealthGoalServiceImpl.java
- src/main/java/com/mumuk/domain/healthManagement/dto/request/HealthGoalRequest.java
- src/main/java/com/mumuk/domain/search/dto/response/SearchResponse.java
- src/main/java/com/mumuk/domain/healthManagement/repository/AllergyRepository.java
- src/main/java/com/mumuk/domain/search/dto/request/SearchRequest.java
- src/main/java/com/mumuk/domain/search/service/SearchServiceImpl.java
- src/main/java/com/mumuk/domain/search/service/AutocompleteServiceImpl.java
🔇 Additional comments (4)
src/main/java/com/mumuk/domain/healthManagement/entity/UserInfo.java (1)
35-35: 기본 생성자 포맷 정리(LGTM)불필요한 세미콜론 제거 및 공백 정리로 가독성 향상. 동작 영향 없습니다.
src/main/java/com/mumuk/domain/search/service/RecentSearchServiceImpl.java (3)
116-116: 변경 없음으로 간주파일 말미 중괄호 변경 표시는 실질 로직 영향이 없어 코멘트 생략합니다.
76-92: SavedRecentSearchReq에 equals()/hashCode() 구현 확인됨
SearchRequest.java의 SavedRecentSearchReq 클래스에 Lombok의 @AllArgsConstructor 및 @EqualsAndHashCode 어노테이션이 적용되어 있어, opsForList().remove()가 내부적으로 equals()를 이용한 값 비교를 수행합니다. 삭제 로직이 의도한 대로 동작하므로 추가 대응이 필요 없습니다.
21-24: 검토 결과: RecentSearchServiceImpl 생성자 변경 영향 없음 확인
- 코드베이스 전체 검색 결과
new RecentSearchServiceImpl(...)직접 호출이나 테스트(@InjectMocks,@Mock,@Autowired)에서의 사용처가 없습니다.- Spring 컨테이너 자동 주입에도 문제가 없으며, 컴파일/런타임 오류 발생 가능성은 없습니다.
따라서 이번 생성자 시그니처 변경은 안전하며 추가 조치가 필요 없습니다.
🎋 이슈 및 작업중인 브랜치
🔑 주요 내용
Check List
Summary by CodeRabbit
사용자 영향: 기능 변화 없음. 앱 동작은 동일하며, 내부 품질과 안정성이 향상되었습니다.