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

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

코린코린님의 프로필 이미지
코린코린

작성한 질문수

스프링 핵심 원리 - 기본편

다양한 의존관계 주입 방법

메서드 주입 관련 궁금한 것이 있습니다.

작성

·

163

0

안녕하세요, 항상 좋은 답변 달아주셔서 감사합니다.

만약 메서드 주입으로 의존관계를 설정한다고 했을 때, 한 클래스에 유사한 메서드 주입이 있을 경우에는 어떻게 동작하는지 궁금합니다.

private DiscountPolicy discountPolicy;
private MemberRepository memberRepository;

@Autowired
public void init1(DiscountPolicy discountPolicy, MemberRepository memberRepository){
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}
@Autowired
public void init2(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}

@Autowired
public void init3(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
this.memberRepository = memberRepository;
this.discountPolicy = discountPolicy;
}

위의 코드일 때, 코드의 내용은 일반 메서드를 통해서 주입받는 매개변수의 갯수가 차이가 난다거나, 매개변수의 순서가 차이날 때입니다.

 

이런 경우에는 Autowired의 의존관계 주입이 어떻게 일어나는지 궁금합니다.

 

항상 좋은 답변 달아주셔서 너무 감사합니다

좋은 하루 되세요.

 

 

 

 

 

답변 1

0

안녕하세요. ...님, 공식 서포터즈 David입니다.
.
해당 클래스를 바탕으로 객체가 생성된 후 @Autowried가 붙은 메서드들이 하나씩 호출됩니다. 각 메서드의 파라미터에 해당하는 빈들을 컨테이너로부터 찾아와 의존관계를 주입해줍니다. 순서, 개수가 달라도 동작은 동일하며 만약 빈의 식별자(빈의 이름, 타입 등)가 동일하다면 동일한 빈이 주입됩니다.
.
감사합니다.

코린코린님의 프로필 이미지
코린코린

작성한 질문수

질문하기