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

20011211s님의 프로필 이미지
20011211s

작성한 질문수

스프링 핵심 원리 - 기본편

[섹션 6] @Autowired 와 컨테이너 생성 순서

해결된 질문

작성

·

114

0

안녕하세요.

섹션6에서 @Autowired에 대해서 공부하다가 잘 이해가 되지 않는 부분이 있어서 질문드립니다.

 

컨테이너는,

  1. 스프링 컨테이너 생성

  2. 스프링 컨테이너 내부의 빈 저장소에 빈 이름과 객체 등록

  3. 설정 정보를 기반으로 빈 간의 의존관계 설정

의 과정으로 생성된다고 [섹션 4]에서 학습하였습니다.

이 과정에서 이해가 잘 되지 않는 것이 있습니다.

@Component
 public class MemberServiceImpl implements MemberService {
     private final MemberRepository memberRepository;

     @Autowired
     public MemberServiceImpl(MemberRepository memberRepository) {
         this.memberRepository = memberRepository;
     }
}

 

빈 저장소에 빈 이름(memberServiceImpl)과 빈 객체를 등록하려면, 생성자를 호출해야 하지 않나요??

생성자를 호출하려면 MemberRepository 타입의 빈을 찾아서 의존관계 주입을 해줘야 하는데, 이러면 컨테이너 생성 과정의 [2], [3]번이 동시에 실행되는 것이 아닌지 궁금합니다.

 

memberServiceImpl 빈 등록

-> 생성자 호출 필요

-> 매개 변수 MemberRepository memberRepository 전달 필요

-> memberRepository 빈을 전달함(의존 관계 주입) [순서 3]

-> 객체 생성 완료 [순서 2]

 

제가 이해한 빈 등록 과정입니다.

결국, 의존관계 주입과 빈 객체 등록은 동시에 이루어지는 것이 아닌지 궁금합니다.

잘못된 부분이 있는지 알려주세요!

 

감사합니다.

답변 1

1

안녕하세요. 20011211s님, 공식 서포터즈 David입니다.

강의에서 잠깐 언급하고 넘어가시는 부분인데 생성자 주입의 경우, 필요에 따라(질문하신 상황) 등록과 의존관계 주입이 함께 발생할 수 있습니다.

감사합니다.

20011211s님의 프로필 이미지
20011211s

작성한 질문수

질문하기