Development/TrobleShooting
@Autowired에 빨간줄이 그어진 이유
이대코
2023. 10. 10. 19:16
1. 문제 정의
고전적이지만, AppConfig 클래스를 따로 만들어서 mapRepository와 DBRepository를 수동 빈 등록을 해둔 상태이다.(2번째 그림)
근데 @Autowired를 사용할 때, 에러 표시로 빨간 줄이 뜬다.
더 웃긴건 스프링부트 서버 실행은 잘된다?
2. 해결방안 접근
1) 에러 메시지 확인1
예..? 해결 방안이 없다구요..?
2) 에러 메시지 확인 2
경고 내용을 볼 때, 자동 의존주입(Autowired)을 받기 위해서는 현재 클래스(DBService) 또한 마찬가지로@Component,@Service 등의 어노테이션을 통해 스프링 빈으로 등록되어 있어야 한다고 한다.
3) 스프링 빈으로 정상 등록됐는지 확인
위처럼 AppConfig 클래스에 @Bean 애노테이션을 써서, Bean으로 등록은 했으나, 정말로 등록됐는지 확인.
누락됐을 수도 있으니깐..?
일단 가볍게 테스트코드로 작성해서 스프링 컨테이너에 담긴 Bean을 모두 조회해봤다.
있네..? 그러면 정말 @Service 어노테이션을 안붙여서 생긴 문제일까?
3) @Service 어노테이션 추가
잘된다. 물론 필드 주입은 추천하지 않는다고 뜨긴 하다만.. 지금은 그게 중요한게 아니지