인프런 커뮤니티 질문&답변

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

상품 목록 - 타임리프

생성자 주입과 스프링 빈 질문 있습니다.

작성

·

274

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
스크린샷 2023-09-17 오후 6.17.50.png강의에서 강사님께서

1.BasicItemContorller가 스프링 빈에 등록이 되면서

2.생성자 주입으로 스프링 빈으로 등록되어 있는 ItempRepository가 스프링 빈에서 주입이 된다.

이렇게 말씀하셨는데 아래와 같이 이해를 했는데 옳게 이해한 것이 맞나요?

  1. 스프링이 실행이 되면 컨테이너에서 관리하는 빈 객체가 생성된다. ( @Controller, @Service,@Respository @Component)

    즉, 위의 예시에서는 BasicItemContorller 빈과 ItempRepository빈을 생성함

2.@Autowired라는 어노테이션을 이용해서

ItempRepository빈을 BasicItemContorller클래스에게 의존성 주입을 하게 만든다.

이때, 의존성 주입을 하는 방법은 생성자와 @Autowired가 필요하다.

3.위와 같은 과정을 거치면 스프링 컨테이너 안에 ItempRepository빈과 BasicItemContorller빈이라는 객체가 생성되고 ItempRepository 객체는 BasicItemContorller객체에 의존하게 된다.

이런 순서로 이해하면 옳게 이해한 것이 맞나요?

 

답변 1

0

안녕하세요. blacnkhole124님, 공식 서포터즈 코즈위버입니다.

네 이해하신 내용이 맞습니다 :)

조금 더 심화하면, BasicItemController 가 나중에 생성되고 ItemRepository가 먼저 생성된다고 유추할 수 있습니다. BasicItemController를 생성하려면 반드시 ItemRepository가 필요하지요. 그래서 BasicItemController 생성을 뒤로 미루고 ItemRepository를 생성하려고 합니다. 만약 ItemRepository로 생성자로 의존성을 주입받고 있다면 그 객체를 먼저 생성하여 빈으로 등록하려고 할것이고요. 이처럼 생성자를 통한 의존은 생성과 의존성 주입이 명확하게 분리되지 않고 복합적으로 발생할수밖에 없습니다.

감사합니다.

blackhole124님의 프로필 이미지
blackhole124

작성한 질문수

질문하기