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

alrnr3521님의 프로필 이미지
alrnr3521

작성한 질문수

스프링 핵심 원리 - 기본편

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

파라미터 질문

작성

·

282

0

@Configuration
static class SameBeanConfig {

@Bean
public MemberRepository memberRepository1() {
return new MemoryMemberRepository("10");
}

@Bean
public MemberRepository memberRepository2() {
return new MemoryMemberRepository("1000");
}

}

2분59초 경에 MemoryMemberRepository("10")

이렇게 파라미터 값을 넘겨줄 수 있다고 하셨는데

MemoryMemberRepository 클래스에는 파라미터 1개를 받는 생성자가 없는데 어떻게 쓸 수 있는건가요?

답변 1

1

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

이 부분과 관련된 질문이신것 같네요.

 

두 @Bean의 return을 보시면 동일한 타입의 인스턴스를 생성하는 것을 확인하실 수 있는데요,

아래의 코드는 영한님이 예시를 들면서 설명하신 부분으로

영한님의 코드에서도 정상 작동하지 않는 것을 확인하실 수 있습니다.

영한님께서 말씀하시는 의도는 alrnr3521님이 이해하신 생성자 관련 부분

---

---

 

이 아닌 파라미터 값을 다르게 줘서 동일한 타입의 인스턴스이지만 서로 다른 파라미터 값을 줘서 의도에 맞게 생성할 수도 있다 라는 것을 설명하신 것으로 보시면 됩니다.

물론 그게 가능하게 되려면 이해하고 계신대로 생성자가 추가가 되어야겠죠?

 

제 답변이 미흡하였거나 추가(부연) 설명이 필요한 경우 말씀해주세요. 감사합니다.

 

 

말씀드린 것을 정리하면,

지금 현재 작성된 코드에서는 파라미터가 추가된 생성자가 없어서 동작 안하는게 맞으며, 

생성자와 필드를 추가시키면 동일한 타입(MemberRepository)이면서도 파라미터 값을 다르게 하여 Bean을 Return 해줄 있다.그것 또한 가능하다. 라는 것을 설명하려는 것입니다.

alrnr3521님의 프로필 이미지
alrnr3521

작성한 질문수

질문하기