inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 기본편

의존관계 자동 주입 - 조회한 빈이 모두 필요할 때, List, Map

399

fightnyy

작성한 질문수 21

0

안녕하세요 영한님 제목에 있는 강의를 듣던 도중 궁금 한 것이 생겨 질문 남깁니다.

다름이아니라 아래와 같이 코드를 구성하였을 때 DiscountService는 AnnotationConfigApplicationContext에 넣어줌으로써 Bean으로 등록 된다는 것은 이해가 됩니다. 하지만 DiscountService 클래스에 있는 policyMap 과policyList는 제 생각으로는 아무것도 등록이 안되어있는 것이 맞을 텐데 어떻게 FixDiscountpolicy와 RateDiscountPolicy가 들어가는지 이해가 잘 되지 않습니다. 이 필드들은 각각 Map과 List이고 제네릭(?)만 DiscountPolicy 인데 

스프링 컨테이너가 "음 Map 과 List 가 DiscountPolicy로 표현이 되었네?  그럼 내가 DiscountPolicy 타입으로 된 Bean이 있나?  아 ! AutoAppConfig에서 ComponentScan으로 해보니까 FixDiscountpolicy, RateDiscountPolicy가 있네? 그럼 그냥 이거 넣어야 겠다." 이런  메커니즘으로 동작하는 것인가요?

bean spring oop

답변 1

2

김영한

안녕하세요. fightnyy님

AutoAppConfig를 통해서 이미 스프링이 FixDiscountpolicy와 RateDiscountPolicy를 스프링 빈으로 다 등록해 둡니다.

스프링은 Map이나 List의 경우에는 약간 특수한 처리를 합니다.

fightnyy님이 생각하셨던 것 처럼 다음 메커니즘으로 동작합니다^^

스프링 컨테이너가 "음 Map 과 List 가 DiscountPolicy로 표현이 되었네?  그럼 내가 DiscountPolicy 타입으로 된 Bean이 있나?  아 ! AutoAppConfig에서 ComponentScan을 통해서 이미 FixDiscountpolicy, RateDiscountPolicy를 스프링 빈으로 등록해두었으니 이걸 사용해야 겠구나. 라고 처리가 됩니다.

감사합니다.

0

fightnyy

영한님 그럼 추가 질문 드리자면 String, Long, List 같은 자바에서 이미 구현된 Class 들에 대해서는 스프링 컨테이너가 별도로 Bean으로 만들지 않는것인가요?

수도 코드로 설명드리자면

if (java 언어 내에서 구현된 Class이면):

    Bean으로 등록안함

else : /*사용자가 만든클래스*/

    Bean으로 등록함

이런식으로 컨테이너가 구성되어 있는것인가요?

구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?

0

45

2

MemberService의 인터페이스를 왜 사용하는지 궁금합니다.

0

72

1

롬복 @Setter를 써야 하는 상황이 있는건가요?

0

87

1

빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?

0

79

1

테스트 속도가 나중에 영향이 있을까요?

0

75

1

gradle 설정 안떠서 질문 남깁니다!

0

116

2

build.gradle로 프로젝트를 여는 이유

0

81

1

provider 사용하는 이유

0

83

1

다음 강의 뭘 들어야 할까요

0

123

2

프로토타입 빈, 직접 destroy 호출 안 할 경우

0

62

1

beanB

0

79

2

퀴즈다시풀기

0

63

1

Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ

0

90

2

"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.

0

63

3

run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>

0

102

2

도메인의 정의?

0

57

1

ApplicationContext 질문입니다.

0

60

1

@Scope의 proxyMode를 사용할때 단위 테스트 방법

0

86

2

ai api 선정하기 관련 질문

0

115

2

생성자 자동주입 관련해서

0

60

1

생성자 직접 호출 vs 팩토리 메서드 패턴

0

91

2

Spring에서 SessionScope와 RequestScope는 함께 사용되나요?

1

62

1

12:25

0

74

2

appConfig.xml 오류

0

124

1