다양한 의존관계 주입 방법
의존관계 주입은 스프링 컨테이너가 관리하는 스프링 빈에서만 동작. 스프링 빈이 아닐경우 @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라 불리는 필드의 값을 변경하는 메서드를 통해 의존관계 주입. 선택&변경 가능성 있는
의존관계에 사용하고 자바빈 프로퍼티 규약의 수정자 메서드 방식 사용