hellokitty-coding-club / LGTM-Backend

Looks good to me (LGTM) 코드 리뷰 매칭 플랫폼 Backend
11 stars 3 forks source link

로컬에서 @Cacheable이 동작하지 않는 문제 #62

Closed ray-yhc closed 1 year ago

ray-yhc commented 1 year ago

Describe the bug

상황

원인

조사해 본 결과, 원인은 다음과 같습니다.

해결 방법

해결 방법에는 크게 두 가지가 있습니다.

  1. #name 대신 #p0를 사용합니다. 첫 번째 인자를 가져온다는 뜻입니다.

    • 이렇게 작성할 경우 로컬에서도 정상 동작합니다.
      @Cacheable(value = "tech_tag_exist", key = "#p0")
      boolean existsByName(String name);
  2. 컴파일 옵션에 -parameters를 추가합니다.

    • 하지만 옵션을 적용하기 위한 두 가지 방법을 모두 적용해보았음에도, 모듈 실행에서 해당 옵션이 적용되지 않습니다.
    • 옵션 적용을 위한 방법을 고민해봐야 할 것 같습니다.
image image

결론

둘 중 하나의 방법을 생각해 봐야 할 것 같습니다.

  1. 프로젝트 전체에서 #name 대신 #p0를 사용
  2. 로컬에서 -parameters를 적용시킬 방법을 찾는다. 둘 중 어떤 방법을 쓸지 고민해주시면 감사하겠습니다!
great-park commented 1 year ago

1번 방법이 더 좋을 것 같네요! 하나 궁금한 점이 있는데, 저렇게 수정했을때 redis에서 key값이 이전 방식과 동일하게 저장되나요??

ray-yhc commented 1 year ago

1번 방법이 더 좋을 것 같네요! 하나 궁금한 점이 있는데, 저렇게 수정했을때 redis에서 key값이 이전 방식과 동일하게 저장되나요??

문제 없이 잘 동작하네요!

image
great-park commented 1 year ago

아 추가로 Member, Senior 그리고 Junior에 @ToString을 적용했는데 이게 실제로 사용할 때 무한 루프가 발생하더라구요.. 서로 필드에서 참조해서 발생하는 문제 같은데, lombok 대신 ToString 메소드를 오버라이드해서 구현해야될ㅈ것 같습니다 이건 따로 이슈 발행하겠습니다

ray-yhc commented 1 year ago

앗 그건 자식 객체에서 이런 방식으로 처리 하시면? 해결될것같네요!

@ToString(exclude = "member")
image