- 주입할 스프링 빈이 없어도 동작해야 할 때
주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
자동 주입 대상이 없는 상태로 @Autowired만 사용하면 required의 기본값이 true라 오류가 발생한다.
- @Autowired 옵션 처리 방법
- @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨
- @Nullable : 자동 주입할 대상이 없으면 null이 입력됨
- Optional<T> : 자동 주입할 대상이 없으면 Optional.empty 가 입력됨
//호출 안됨
@Autowired(required = false)
public void setNoBean1(Member member) {
System.out.println("setNoBean1 = " + member);
}
//null 호출
@Autowired
public void setNoBean2(@Nullable Member member) {
System.out.println("setNoBean2 = " + member);
}
//Optional.empty 호출
@Autowired
public void setNoBean3(Optional<Member> member) {
System.out.println("setNoBean3 = " + member);
}