[SpringBoot] Error - Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.

현주·2024년 3월 4일
0

Trouble Shooting

목록 보기
30/32

🔥 문제

JWT 관련해서 코드를 구현하던 중 아래와 같은 에러가 발생했다.

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.


Action:

Consider defining a bean of type 'java.lang.String' in your configuration.


Process finished with exit code 0

설명을 직역하자면, "해당 클래스에 있는 생성자의 매개 변수는 "java.lang.String" 타입의 빈이 필요한데, 찾을 수 없다 "는 것이다.

즉, 생성자에서 String type Bean이 필요한데 없다!


💡 원인

문제의 원인은 아래 AuthTokenProvider 클래스를 보면 secret이라는 변수가 들어간다.

이 secret은 JwtConfig 클래스에서 @Value 애너테이션을 통해 application.yml 파일에 정의된 값을 주입받도록 설정되어 있다.

그런데 이게 적용이 왜 안되나 했더니

해당 클래스에 @Configuration 애너테이션이 붙어 있으면, 이 값을 주입받는 생성자에 @Bean을 붙여야 하는데,

이를 붙이지 않았다는 것을 알게되었다..!

결국 이 에러는 String 타입의 변수가 스프링 컨테이너에 빈으로 등록되어 있지 않아서 의존성을 주입할 수 없다는 말이었다.


☘️ 해결

그래서 아래와 같이 @Bean을 붙여주니 잘 해결되었다. ㅎㅎ

0개의 댓글