데브코스에서 팀플을 진행중에 로그인한 사용자들을 확인후 id를 가져오는 AOP를 만들었다.
그 중 일부 내용을 발췌한 것 인데, 대략적으로 아래 코드와 함께 요약하면
로그인을 한 상태에서 로그인한 사용자의 ID가 필요한 메서드에 @CurrentMemberId를 붙이면 해당 메서드의 파라미터들의 값들을 불러와 memberId가 있으면 로그인한 사용자의 memberId로 매핑해 주는 것이다.
다시 AOP 코드로 가서,
여기서 봐야할 것은 parameterName 인데 이 AOP를 적용한 팀원분의 로컬에서는 해당 메서드들의 파라미터들의 갯수만큼 for문을 돌며 각 파라미터의 값들이 잘 불러와졌다. (ex memberId 등)
하지만 내 로컬에서는 되지 않아, 콘솔로 찍어보니
맨 아래의 parameterName이 현재는 잘 나오지만 memberId 처럼 실제 값이 들어가지 않고 arg0, arg1, arg2 처럼 인식이 되어 나왔다. -> 그래서 aop가 적용이 되지 않았다.
관련해서 한참을 찾아보니 관련 블로그가 나왔는데,
vm option에 -parameters를 추가해주면 된다고 하였다!
그래서 vm option에 -parameters 추가를 호기롭게 시도했다!
이렇게 add vm options에 추가를 해주고 해당 공란에 -parameters를 추가해주었다. 그런데..
이런 에러가 계속 떠서 암만 구글링을 해봐도 해결책은 찾을 수 없었다........
그러다가 발견!!
빠르게 해결책부터 보면
Preferences -> Build, ExecutionDeployment -> Compiler -> Java Compiler
여기에 -parameters 를 적어주니 해결 되었다!
ps. 다시 한번 테스트 해볼려고 적용했던 Additional command line parameters에 -parameters를 지우고 실패하길(다시 arg0,arg1등이 뜨길 바라며) 바라며 다시 인텔리제이를 돌려보니 으잉? 잘된다??
예상컨데, 애초에 한번 -parameters를 등록? 추가? 해주면 지워도 이미 들어가 있어서 정상적으로 작동 하는건가 하는 생각이 든다. 일단 나중에 같은 에러가 뜨더라도 저기에 한 번더 추가해보는 시도를 해봐야겠다!
'트러블 슈팅' 카테고리의 다른 글
JPA를 사용한 데이터 조회 시 findByXXX() vs findAll() + stream(filter): 성능 비교 분석 (1) | 2024.10.23 |
---|---|
try-catch와 @Transactional을 함께 사용시 트랜잭션 롤백 여부 (0) | 2024.09.29 |