Could not autowire. No beans of type found. error
결국 빈이 제대로 등록이 되어 있지 않아 생기는 문제이다.
주로
Component 역할을 해야 하는 Controller, Service, Repository class 들에게
@Component(@Controller, @Service, @Repository) 못 붙이거나 잘 못 붙여서 생기는 문제이다.
interface에 이 어노테이션을 붙이는 걸로 착각하기도 한다.;;
요즘에 이 error가 생긴 일들이 많아 정리하고자 한다.
1) Dto 안에 주입할려고 함.
Dto 자체는 @Component 자체가 아닌다. Spring 빈으로 애초에 등록된 안된 빈에 주입할려고 하면 spring이 관리하지 않아 오류가 난다.
2) TestCode를 짤 때
최근에 Querydsl을 사용한 적이 있었다. querydsl를 짠 class에 @Repository를 붙여서 사용했다. 실제 프로젝트에서는 이상없이 잘 동작했다!
하지만 TestCode를 작성 할 때 이 오류가 난다.
해결:
따로 interface에 imple하는 구현 class로 하고 impl한 interface는 Repository로 주입하면 오류가 사라진다.