@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;
}
}
@Component
public class OrderServiceImpl implements OrderService {
private final MemberRepository memberRepository;
private final DiscountPolicy discountPolicy;
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
}
@Component
public class OrderServiceImpl implements OrderService {
@Autowired
private MemberRepository memberRepository;
@Autowired
private DiscountPolicy discountPolicy;
}
의존관계 자동 주입은 스프링 컨테이너가 관리하는 스프링 빈이어야 동작한다
스프링 빈이 아닌 클래스에서 @Autowired 코드를 적용하면 동작하지 않음
생성자 주입을 제외한 주입 방식들은 모두 생성자 이후에 호출되므로,
필드에 final 키워드 사용 불가
기본으로 생성자 주입을 사용하되,
필수값이 아닌 경우에는 수정자 주입 방식을 옵션으로 부여하여 사용