강의

멘토링

로드맵

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

스프링링님의 프로필 이미지
스프링링

작성한 질문수

스프링 핵심 원리 - 기본편

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

빈에는 4개가 등록되어 있는 것이 맞나요?

작성

·

166

0

AutoConfig.class 내 @Component가 붙어있는 "FixDiscountPolicy"와 "RateDiscountPolicy" 이렇게 두개와 DiscountService.class 내 List와 Map 두가지 모두 빈으로 들어오는게 맞나요?

 

맞다면 만약 실제로 Map을 쓰겠다고 마음을 먹게되면 List는 만들지 않을 것이고, 다만 "FixDiscountPolicy"와 "RateDiscountPolicy" 이 두가지는 중복되게 빈을 생성해주어야 하는 것인가요?? 굳이 중복되는 리소스를 낭비해가면서 저장한 Map으로 조회된 빈이 모두 필요한 경우가 있나요?

퀴즈

필드 주입(Field Injection) 방식이 일반적으로 권장되지 않는 이유는 무엇일까요?

불변성을 보장하기 어려워서

의존성 변경이 쉬워서

순수 Java 코드로 테스트하기 어려워서

설정 코드 작성이 복잡해서

답변 1

1

안녕하세요. 스프링링님, 공식 서포터즈 David입니다.

.
DiscountService 내 List, Map이 빈으로 등록되는 것은 아닙니다. List, Map에 지정된 타입을 보고 해당 타입에 부합하는 빈을 컨테이너로부터 주입받게 됩니다.  따라서 중복되게 빈을 생성하는게 아닙니다.

강의 내용 중 로그를 보시면 Map, List에 각각 들어간 FixDiscountPolicy 객체의 참조값이 일치합니다. 이는 스프링 컨테이너로부터 동일한 싱글톤 빈을 주입받았음을 알 수 있습니다.


.
감사합니다.

스프링링님의 프로필 이미지
스프링링

작성한 질문수

질문하기