• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

빈 등록 안 된 상태에서 @Autowired사용

22.07.23 22:35 작성 조회수 373

3

강의 4:13초에 실행된 결과 값이 이해가 가지 않습니다. 저는 오류가 발생해야 된다고 생각합니다.

그 이유는 @Autowired가 생략된 것으로 @Autowired로 인해 의존 관계가 주입이 되어야 하는데 

new AnnotationConfigApplicationContext(); 인자 속에 DiscountService.class만 존재합니다. 그러면 DiscountService생성자의 매개변수 타입이 빈 등록이 안 되어 있어 주입해 줄 타입의 빈이 존재하지 않아 오류가 발생해야 한다고 생각하는데 오류가 왜 안 나는 것인가요?

감사합니다.

답변 1

답변을 작성해보세요.

4

David님의 프로필

David

2022.07.24

안녕하세요. 스프린이님, 공식 서포터즈 David입니다.

스프링 컨테이너에서는 Map, List를 주입해줄 때 내부적으로 빈 Map, List를 먼저 만들고, 해당 타입을 가진 빈이 존재하면 Map, List에 추가한 다음 파라미터에 주입해줍니다.

따라서, 아무런 빈이 존재하지 않으면 빈 Map, List가 주입하게 되는 것이기 때문에 오류가 발생하지 않습니다.

감사합니다.