[ERROR 지옥] Unsatisfied dependency expressed through constructor parameter 0: --
--SmartAssistant 개발 중🛠️
기술 스택 - SpringBoot
[이전 상황?]
간단하게 이메일을 전송하는 코드를 구현하고자 의존성 추가, 메일 전송 코드 작성, stmp 서버 설정.
에러가 발생한 지점?
: javaMailSender를 사용하여 이메일을 보내는 코드 구현 도중...
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.example.smart_assistant.service.EmailSender required a bean of type 'org.springframework.mail.javamail.JavaMailSender' that could not be found.
Action:
Consider defining a bean of type 'org.springframework.mail.javamail.JavaMailSender' in your configuration.
라는 오류 발생.
javaMailSender의 Bean 자동 주입 불가.
--> 수동으로 빈 등록 시도
config 디렉 하위에 (@Configuration JavaMailConfig / @Bean JavaMailSender 추가)
Unsatisfied dependency expressed through constructor parameter 0: Error creating bean
라는 오류 발생. (???)
이후, 수동 환경 properties 설정 등 계속 시도를 해 보았으나
---> 여전히 spring-boot-starter-mail의 의존성 인식이 불가하다는 로그
pom.xml을 확인해 보아도
이렇게 의존성 추가 코드가 잘 적혀있고
mvn clean install
로 재실행 해 보아도 여전히 인식할 수 없다는 로그를 출력한다.
1) 의존성 설치 과정에서 충돌이 일어난 것인가?
하여 아래 명령어를 통해 확인.
mvn dependency:tree
확인 결과 의존성 간 충돌이나 중복된 의존성을 확인했으나 별다른 문제는 없다.
2) 자동으로 의존성을 설치하는 부분에서 무엇인가 내가 모르는 오류로 설치가 안된 것인가?
하여
/User/username/.m2/... 하위에 의존성들이 설치된다는 정보를 찾았다.
(-> .m2 파일은 숨겨진 파일임으로 ls -a 명령어를 통해 확인하자)
찾아본 결과 .jar(의존성 파일)은 모두 잘 저장됨을 확인했다.
?? 이때부터 뭔가 이상함을 감지.. 다른 의존성도 설치해 본 결과... 모든 의존성들이 인식 불가로 에러 로그를 출력한다..
결국 해결...
원인은 spring boot, maven을 사용 중이지만 나는 단순하게 내 코드를 java 파일로 취급했고...
단순 내부 코드들은 아무 이상 없이 잘 실행되었지만, 의존성 설치가 필요했던 (예를들어 javamail) 코드들은 의존성 파일들을 인식할 수 없었기에 이 난리가 난 것이었다.
spring boot extensions을 설치 한 후 spring boot로 실행하자 모두 해결...🥲
이론도 무엇도 없이 코드 구현, 실행부터 시작해보는 내 버릇이 이런 참사를 일으킨듯... 글 한 페이지로 정리해보니 정말 아무것도 아닌 문제로 보이지만 나는 이걸 며칠동안 고민했다고...
자바는 익숙한 언어이기에 더더욱 방심했다...