인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김예은님의 프로필 이미지
김예은

작성한 질문수

스프링 핵심 원리 - 기본편

조회한 빈이 모두 필요할 때, List, Map

조회한 모든 빈

작성

·

385

0

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

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

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

[질문 내용]

모든 빈을 조회하기 위해 임의의 클래스를 생성하여, 해당 클래스의 생성자에 autowired로 빈을 등록하려 할 때, 해당 빈과 의존성이 있는 discountPolicy가 등록된다는 것은 알겠습니다.

그런데, 이렇게되면 싱글톤 보장이 되는건가..? 라는 의문이 들었습니다.

스프링에서는 싱글톤을 보장하기 위해서 discountPolicy 중에 하나만을 빈 팩토리에 등록할텐데, 여기에 임시로 만든 클래스에서는 결국 ratediscountPolicy와 fixDiscountPolicy가 모두 등록되는 상황이므로, 싱글톤이 보장되는건가요..?

조금 생각해보면, 사실 싱글톤은 하나의 객체를 가지고 있는거여서 해당이 안될 것 같다는 생각도 들었지만, 확실하지 않아서 질문드립니다.

 

추가적으로, 한 interface의 두개의 객체를 빈 팩토리에 등록하려고 하면 에러가 뜨는 것으로 알고 있는데, 이 Map에서는 어떻게 두 개의 구체 클래스를 모두 가져올 수 있는지 궁금합니다.

 

감사합니다.

답변 1

1

안녕하세요. 김예은님, 공식 서포터즈 David입니다.

서로 다른 이름을 가지는 빈은 등록이 됩니다. 다만, 특정 타입으로 의존관계를 주입 받으려고 할 때 특정타입을 가지는 빈이 여러 개 존재하면 무엇을 주입 받아야 하는지 모르기 때문에 오류가 발생합니다.

따라서, 이미 팩토리에 빈은 다 등록되어있기에 모두 가져올 수 있는 것입니다.

감사합니다.

김예은님의 프로필 이미지
김예은

작성한 질문수

질문하기