작성
·
177
3
안녕하십니까! 강의를 잘듣고있떤 와중에 궁금한 것이 생겨 질문을 드리게 되었습니다.
필드주입의 경우 필드에 @Autowird 어노테이션만 붙이면 된다고 하셨는데
OrderServiceImpl 이라는 클래스에서
@Autowird private MemberRepository memberRepository 이렇게 가지고 있을 경우
Spring에서 MemberRepository 형태로 등록되어 있는 빈을 꺼내서 자동으로 저기에 주입시켜주는 것이 맞나요? 강의의 예제의 경우 MemoryMemberRepository 클래스 정의 상단에 @Component 어노테이션이 있기에 처음에 component scan 방식으로 해당 컴포넌트를 인식하여 MemoryMemberRepository를 빈에 등록을 한 후 OrderServiceImpl에서 @Autowird private MemberRepository memberRepository 해당 부분을 본 후 MemoryMemberRepository도 MemberRepository 인터페이스를 구현한 것이기에 MemberRepository 형태로 빈에서 찾을경우 찾은 결과에 속할 수 있기에
그렇게해서 찾은 MemoryMemberRepository를 OrderServiceImpl의 memberRepository로 의존관계를 주입해주는 것이 맞나요??
만약 맞다면 MemberRepository를 구현하는 메모리멤버리파짓토리와 디비멤버리파지토리가 모두 bean 에 등록되어있을 경우에는 어떻게 작동하게 되는건가요?
답변 1
2
안녕하세요. wan2good님
MemberRepository 인터페이스를 구현한 모든 것이 주입의 대상이 됩니다. 따라서 이 경우 충돌이 발생합니다.
바로 조금 뒤에 이런 문제를 어떻게 해결하는지 자세히 설명드립니다^^
감사합니다.