작성
·
296
·
수정됨
0
안녕하세요.
스프링 컨테이너에 스프링 빈이 등록되는 과정이 두 단계로 이루어진다고 설명해주셨는데요. 어떤 방식으로 이루어 지는지 궁금합니다.
memberService : 덤프객체1
orderService : 덤프객체2
memberRepository : 덤프객체3
discountPolicy : 덤프객체 4
스프링 빈 등록 단계
-> 스프링 빈 이름 : 의미없는 객체
스프링 빈 의존관계 주입 단계
-> 객체 생성 시 주입 받을 필요가 없는 기본 생성자 객체부터 생성한다. 그 이후 생성자 주입이 필요한 객체들을 생성한다.
memberService : new MemberServiceImpl( ??? )
orderService : new OrderServiceImpl( ???, ??? )
memberRepository : new MemoryMemberRepository()
discountPolicy : RateDiscountPolicy()
스프링 빈 등록 단계
-> 스프링 빈 이름 : 객체 생성. 하지만 생성자 주입을 받아야하는 객체들은 스프링의 어떠한 조치로 인해 ???인자로 채워 넣음으로 의존관계 설정 유보
스프링 빈 의존관계 주입 단계
-> 생성자 주입이 필요한 객체들에 맞게 의존관계 주입
memberService : new MemberServiceImpl (MemberRepsotory)
orderService : new OrderServiceImpl(MemberRepository, DiscountPolicy)
memberRepository : new MemoryMemberRepository();
discountPolicy : new RateDiscountPolicy();
스프링 빈 등록 단계
-> 스프링 빈 이름 : 순서대로 메소드 호출하며, 생성자 주입이 필요하다면 해당 객체부터 생성 후 주입 받아서 객체 생성
전 이 세가지가 떠오르는데 어떤 방법으로 나뉘어 실행되는지 도움 부탁드립니다. 감사합니다.
안녕하세요. David님 답변 감사합니다. 그러면 이 강의 내에서 설명해주신 스프링 빈 생성 단계와 의존관계 주입 단계로 나누어졌다는 게 시간 기준으로 나뉘는 게 아닌가요?
스프링 빈 생성 완료 -> 의존관계 주입 이 순서로 이루어진다고 받아들였는데 David님 말씀은 스프링 빈을 생성할 때 의존관계 주입이 필요하면 주입에 필요한 빈을 먼저 생성해 의존관계를 주입해주고, 필요 없으면 그냥 객체를 만들어 빈으로 등록해준다는 설명 같은데, 이 과정은 강의 내 설명해주신 것과는 좀 다른 것 같다고 느껴집니다. 두 단계의 라이프 사이클을 갖는다는 말 때문에 헷갈려서요. 그냥 하나의 객체를 빈으로 등록하는데 주입 받을 대상이 있느냐 없느냐에 따라 그냥 빈으로 등록할 건지, 의존관계 주입 대상인 빈을 먼저 생성해서 주입받아 빈으로 등록할 건지 이 한단계가 끝 아닌가요..?