정리자 - 이태혁(Lee, TaeHyuk)

[Section6 - 의존관계 자동 주입]

6-1) 다양한 의존관계 주입 방법

의존관계 주입 방법 - 4가지 존재

  1. 생성자 주입
  2. 수정자 주입 (setter 주입)
  3. 필드 주입
  4. 일반 메서드 주입

→ 위의 4가지 방법에 대해서 하나씩 알아보도록 하자

  1. 생성자 주입
@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

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

여태까지 해왔던 방법이 생성자 주입 방법이다. 위와 같이 구현체생성자 위에 @Autowired를 달아놓으면 Type을 보고(type으로 식별) 알아서 구현체를 가져와서 주입해준다.

(구현체를 어디서 가져오는데? 스프링 컨테이너에 등록되어 있는 Bean중에 타입이 맞는 것을 가져오는 것)

[특징]

@Component
public class OrderServiceImpl implements OrderService{

    private final MemberRepository memberRepository;
    private final DiscountPolicy discountPolicy;

    public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) {
        this.memberRepository = memberRepository;
        this.discountPolicy = discountPolicy;
    }
}