Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

히콩쓰 개발 일지

SpringBoot UnsatisfiedDependencyException 해결 본문

카테고리 없음

SpringBoot UnsatisfiedDependencyException 해결

용히콩 2023. 12. 6. 23:59

UnsatisfiedDependencyException
: 직역_만족되지 않은 종속성 예외

 

 


프로젝트 구현 중, 위와 같은 에러를 마주했다.

에러 코드를 읽어보니, Bean 생성에 실패한 것이었고, 구글링 해보니 대부분 @Service @Controller @Component 의 Annotation 관련 오류였다.

하지만, 구현된 코드에는 Annotation이 적절하게 작성되어 있었고, 혹시나 하여 파일 위치까지 잘 살펴봤지만 별다른 문제를 발견하지 못했다.

그런데 왜 Service와 Controller 모두 Bean 생성이 되지 않는 것인지 도무지 알 수 없었고, 단순히 Annotation 문제라고 생각했던 자신을 책망하며 에러코드를 뜯어보기 시작했다.


에러코드를 천천히 살펴보니, 가장 아래쪽에서 그 원인을 찾을 수 있었다.

Could not resolve placeholder 'jwt.secret.key' in value "${jwt.secret.key}"

 

카카오 로그인을 구현하면서 토큰을 생성하기 위해 Jwt를 사용하고 있었는데, 이 때⭐ jwt secret key를 제대로 받아오지 못해 발생한 문제로 추측됐다.

jwt secret key는 원래 이렇게 관리하면 안되지만, 쉽고 빠른 구현을 위해 application.yml 파일에 직접 넣어놓은 상태였다.

jwt:
  secret:
    key= 7Iqk7YyM66W07YOA7L2(이하 생략)

원래 application.properties로만 사용하다가 이번 프로젝트에서 yml 파일을 사용하게 됐는데, 문법이 익숙치 않았고 아래의 원래 코드를 복붙해서 넣었다.

jwt.secret.key=7Iqk7YyM66W07YOAL2(이하 생략)

위 코드를 yml 파일에 복사해서 넣으니, intellij에서 형식을 자동으로 변환해주길래 나보다 똑똑한 intellij를 믿었다.

⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️

하지만 intellij가 변환해준 코드는 아래와 같았고, 이 _문법적 오류 때문에 애초에❗ Bean 생성이 되지 않고 있었던 것_이다.

jwt:
  secret:
    key=7Iqk7YyM66W07YOA7L2(···)Lg==:

정상적인 코드 작성을 위해 yml 파일의 문법 형식에 맞게 아래와 같이 코드를 수정하였다.

jwt:
  secret:
    key: 7Iqk7YyM66W07YOA7L2(이하 생략)

코드를 수정하니, 정상적으로 작동되었다.

Annotation의 문제가 가장 흔하고 많을 테지만, Annotation의 문제가 아니라고 판단된다면 에러코드를 천천히 읽어보면서 문제의 원인을 파악하는 것이 좋을 것 같다.


구글링의 결과가 전부 Annotation 오류여서 다른 이유를 생각하기 어려웠는데, 항상 문제의 원인은 다양할 것이며 구글링이 무조건 내 상황과 완벽하게 일치하지는 않을 것이다. 라는 생각을 기본적으로 해야겠다고 느낀 계기가 되었다.ಥ_ಥ 바보같은 실수를 해버렸다😭