다양한 의존관계 주입 방법

의존관계 주입은 스프링 컨테이너가 관리하는 스프링 빈에서만 동작. 스프링 빈이 아닐경우 @Autowired 코드 적용해도 기능이 동작하지 X

의존관계 주입 4가지

생성자 주입

생성자 호출 시점에 딱 1번만 호출됨을 보장. 불변&필수 의존관계에 사용

생성자 하나일 경우 @Autowired 설정 없어도 자동 의존 관계 주입 가능 (=생략 가능)

@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;
    }
...
...
}

수정자 주입

setter라 불리는 필드의 값을 변경하는 메서드를 통해 의존관계 주입. 선택&변경 가능성 있는

의존관계에 사용하고 자바빈 프로퍼티 규약의 수정자 메서드 방식 사용