개발 환경
마켓 컬리 Redisson을 사용한 분산 락
위 링크를 참고하여 redisson 사용한 분산 락 구현중에 예상하지 못한 오류에 직면 했다. Spring 2.x.x 만 써오던 나에게 생소한 오류여서 적잖이 당황했다.

Aop 에서 넘겨주는 parameterNames가 null 이라는 것...
디버깅을 통하여 원인을 분석해 본 결과

AOP 를 통하여 획득된 MethodSignature 의 parameters가 null 이라는 것이다.
parameterType는 정상적으로 넘어오는데 parameters만 null 이라는 것은 매우 당황스러운 상황이었다.
원인은 다음과 같다.
자바를 컴파일할 때 매개변수 이름을 읽을 수 있도록 남겨두어야 사용할 수 있다. 컴파일 시점에 -parameters 옵션을 사용하면 매개변수 이름을 사용할 수 있게 남겨둔다.
스프링 부트 3.2 전까지는 바이트코드를 파싱해서 매개변수 이름을 추론하려고 시도했다. 하지만 스프링 부트 3.2 부터는 이런 시도를 하지 않는다.
출저
따라서 Intellij javac compiler 옵션에 -parameters를 추가해 주어 해결하였다.
1. javac 컴파일러 옵션으로 '-parameters를 추가하고 out 폴더를 삭제한뒤 다시 시도'


build.gradle에서 컴파일러에 옵션을 추가해주면 IDE마다 설정할 필요가 없고 나중에 CI/CD로 배포할때 따로 설정할 필요가 없으니 시도해보았으나. 실패했다.

build.gradle에서 compiler에 옵션을 주는 방법이 안되는 현상은 좀 더 찾아봐야겠다.
번외
@EnableAspectJAutoProxy(proxyTargetClass = true) 를 설정 파일에 추가하는 방법을 사용해보았으나 해결하지 못하였다.

GitHub Action
github action 에서 도 AOP 관련 오류가 발생할까봐 걱정했는데
테스트시 문제 없이 통과 하였다. 