: 생성자를 통해 의존관계를 주입받는 방식으로 생성자 호출시점에 딱 1번 호출되는것이 보장된다.
💡불변
, 필수
의존관계에 사용된다.
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
어노테이션이 없어도 된다.(생략가능): Setter를 통해 필드의 값을 수정할 수 있는데(자바 관례인 getter/setter) 이런 수정자 메서드를 통해 의존관계를 주입하는 방법.
💡선택
, 변경
가능성이 있는 의존관계에 사용된다.
💡자바빈 프로퍼티 규약의 수정자 메서드 방식(setter)을 사용하는 방법이다.
public class OrderServiceImpl implements OrderService{
private MemberRepository memberRepository;
private DiscountPolicy discountPolicy;
@Autowired
public void setMemberRepository(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
@Autowired
public void setDiscountPolicy(DiscountPolicy discountPolicy) {
this.discountPolicy = discountPolicy;
}
}
@Autowired
애노테이션을 부여해서 의존관계 주입을 한다.Null
상태.❗생성자 주입은 스프링 빈에서 해당 클래스를 생성하는 시점에서 생성자를 호출할수밖에없는데 해당 생성자에 파라미더를 전달하기위해서 의존관계를 주입해줘야 한다.