신입 개발자가 되기 위해 공부했던 독학 자료들/에러 해결 모음

[STS/스프링에러] No qualifying bean of type available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations:

Seojoo21 2022. 2. 15. 16:03

패스트캠퍼스에서 남궁성의 스프링의 정석으로 스프링 공부를 하고 있지만 따로 교재가 없고 강의 업로드도 늦어져 구멍난 곳을 메우기 위해 <코드로 배우는 스프링 웹 프로젝트> 책을 무작정 따라하며 스프링을 공부하기로 결정했다. 

 

윈도우 및 오라클 기반의 실습인 <코드로 배우는 스프링 웹 프로젝트>에서 맥 OS로 진도를 따라가는건 정말 어렵다.

일단 기본 설정부터가 만만치 않다. 기본 설정만 시간을 얼마나 투자하는건지... 특히 도커를 이용해서 오라클 SQL Developer 설치하는게 최고였다. 그래도 혼자 구글링하며 설정을 끝냈고 편하게 이용할 수 있게 되었다.

 

그다음 ch.4 MyBatis와 스프링 연동을 따라가는데 아래와 같은 오류 코드를 만났다.

오류내용: No qualifying bean of type 'com.zerock.mapper.TimeMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

 

ㅎ ㅏ.... 이건 또 뭐야..... 

 

해석해보니 내부 코드에서 Beans을 못찾겠다는 것인데... Bean의 생성자를 찾거나 정의하지 못하는 것 같았다. 

해당 에러 코드로 구글링 했더니 웬만한 글들은 내 케이스와는 관련이 없는 것 같았고 아래 블로그 글을 보고 해결할 수 있었다. 

 

https://sg-moomin.tistory.com/entry/available-expected-at-least-1-bean-which-qualifies-as-autowire-candidate-Dependency-annotations-오류-해결해보기

 

즉 @Autowired 값에 required=false 주기.

TimeMapper 인터페이스 내에 Setter 관련 추상메서드가 없어 Lombok으로 Setter를 만들때 오류가 난건가... 아직 아는 내용이 없어서 왜 오류가 났는지 모르겠다.

 

그래도 @Autowired에 required를 false로 주면서 Bean을 반드시 정의할 필요가 사라졌기 때문에 오류는 해결된 것으로 보인다.

 

원인은 모르겠으나 어쨌든 해결은 했으니 일단 진도를 나가야지. 계속 공부하다보면 이해가 깊어질 것이다.