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

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

김진욱님의 프로필 이미지
김진욱

작성한 질문수

스프링 핵심 원리 - 기본편

스프링 빈 조회 - 동일한 타입이 둘 이상

특정 타입 모두 조회하기 질문입니다.

작성

·

253

0

@Test
@DisplayName("특정 타입을 모두 조회하기")
void findAllBeanByType() {
Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class);
for (String key : beansOfType.keySet()) {
System.out.println("key = " + key + " value = " + beansOfType.get(key));
}
" value = " + beansOfType.get(key));가
왜 이렇게 나오는 건지 이해가 안갑니다
value = hello.core.member.MemoryMemberRepository@613a8ee1
beansOfType에서 키값을 얻는 건데 위에 Map<>에서는 키값이String으로 돼있는데 왜 위 처럼 나오죠?

답변 1

0

안녕하세요. 김진욱님, 공식 서포터즈 OMG입니다.

beansOfType에서 키값을 얻는 건데

 beansOfType.get(key)

라고 말씀하셨는데 key값을 얻는게 아닌 beansOfType에서 key값에 해당하는 value를 가져오는게 맞습니다.

예를 들어 Map<이름표, 사람객체> 이 있습니다.

- "홍길동", 홍길동("홍길동",19(나이),180(키))

- "김철수", 김철수("김철수",29(나이),181(키))

위와 같은 데이터가 있을 때

key는 "홍길동", "김철수"

value는 홍길동("홍길동",19,180) , 김철수("김철수",29,181) 입니다.

코드의 반복문을 보시면 아시겠지만

for (String key : beansOfType.keySet()) {
System.out.println("key = " + key + " value = " + beansOfType.get(key));
}
 beansOfType.keySet() 에서 key를 탐색합니다. 해당 keyset에는 위의 예시 기준으로 "홍길동"과 "김철수"가 들어있겠죠?

이 이름표(keyset에서 각각의 key)를 바탕으로 사람 객체(value)를 가져온다고 보시면 됩니다.

 

감사합니다. 

김진욱님의 프로필 이미지
김진욱

작성한 질문수

질문하기