생성자를 통해서 의존 관계를 주입 받는 방법이다.
1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용된다. 두번 호출 안되게 할 수 있다.
필수 의존관계만 사용된다.
선택, 변경 가능성이 있는 의존관계에 사용
Autowired(required = false) : 주입할 대상이 없어도 동작하게 하려면 이렇게 사용한다.
setter라 불리는 필드의 값을 변경
class Data {
private int age;
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
@Autowired private MemberRepository memberRepository;
// 무조건 값이 있어야 한다.
@Autowired private DiscountPolicy discountPolicy;
주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
디폴트값으로 동작할 때도 있다. required = true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.
@Autowired(required=true) : 자동 주입 대상이 없으면 수정자 메서드 자체가 호출 안된다.
@Nullable : 자동 주입할 대상이 없으면 null이 입력된다.
Optional<> : 자동 주입할 대상이 없으면 Optional.empty가 입력된다.