Development/TrobleShooting

@Autowired에 빨간줄이 그어진 이유

이대코 2023. 10. 10. 19:16

1. 문제 정의

고전적이지만, AppConfig 클래스를 따로 만들어서 mapRepository와 DBRepository를 수동 빈 등록을 해둔 상태이다.(2번째 그림)

근데 @Autowired를 사용할 때, 에러 표시로 빨간 줄이 뜬다.

더 웃긴건 스프링부트 서버 실행은 잘된다?

AppConfig에서 빈 수동등록 해둔 상황
스프링부트 실행은 문제없이 된다

2. 해결방안 접근

1) 에러 메시지 확인1

아 물론 나도 해석할 수 있지만

예..? 해결 방안이 없다구요..?

 

2) 에러 메시지 확인 2

경고 내용을 볼 때, 자동 의존주입(Autowired)을 받기 위해서는 현재 클래스(DBService) 또한 마찬가지로@Component,@Service 등의 어노테이션을 통해 스프링 빈으로 등록되어 있어야 한다고 한다. 

3) 스프링 빈으로 정상 등록됐는지 확인

위처럼 AppConfig 클래스에 @Bean 애노테이션을 써서, Bean으로 등록은 했으나, 정말로 등록됐는지 확인.

누락됐을 수도 있으니깐..?

 

일단 가볍게 테스트코드로 작성해서 스프링 컨테이너에 담긴 Bean을 모두 조회해봤다.

있네..? 그러면 정말 @Service 어노테이션을 안붙여서 생긴 문제일까?

 

3) @Service 어노테이션 추가

잘된다. 물론 필드 주입은 추천하지 않는다고 뜨긴 하다만.. 지금은 그게 중요한게 아니지