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

sfdfs님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

@Configuration과 싱글톤

스프링 컨테이너에 저장되는 것

작성

·

149

0

안녕하세요! 질문이 있습니다.

스프링 컨테이너에 정확히 어떤 클래스가 저장되는지 헷갈리는데... AppConfig에서 return new 가 되는 클래스들이 컨테이너에 저장되는 것이 맞나요?

 

AppConfig 기반으로 보자면,

스프링 컨테이너에는 MemberServiceImpl, MemoryMemberRepository, OrderServiceImpl, RateDiscountPolicy 이렇게 딱 4개만 저장되는 것인가요?

 

추가적으로, configurationTest 메소드 내에서

MemberServiceImpl memberService = ac.getBean("memberService", MemberService.class); 라고 했더니 MemberServiceImpl이 출력되더라구요.

그런데 만약 스프링 컨테이너에 부모를 MemberSerivce 로 갖고 있는 자식들 중 MemberServiceImpl 말고 다른 자식들도 있다면.. 그 자식들 전체를 출력할 것 같은데..

이때 타입이 Map으로 자동완성이 안되서요... 자식들 즉, 구현체들이 전체 불러와질 것 같은데 원래 Map이 되어야 하는 것 아닌가요?

답변 1

0

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

1. AppConfig만 놓고 보면 맞습니다. 

2. bean을 가져오는 조건이 여러개가 있는데, 이름, 타입 등으로 우선순위가 있습니다. getBean(이름, 타입)하셨기 때문에 이름과 매칭되는 1개의 빈을 가져오는 것입니다. 해당 타입에 해당하는 걸 다 가져오시려면 getBeansOfType을 사용하세요:)

감사합니다.

sfdfs님의 프로필 이미지

작성한 질문수

질문하기