스프링 @Autowired
의 기본 옵션은 required=true
인데 이때 의존관계 자동 주입 대상이 없으면 오류가 발생하게 된다.
주입할 스프링 빈이 없어도 동작해야하는 경우에는 다음과 같이 옵션을 설정해줄 수 있다.
@Autowired(required = false)
public void setNoBean1(Member noBean1) {
System.out.println("noBean1 = " + noBean1);
}
@Autowired
의 옵션을 required=false
로 설정하면 의존관계 자동 주입의 대상이 없으면 수정자(setter) 메서드가 호출 되지 않는다.
@Autowired
public void setNoBean2(@Nullable Member noBean2) {
System.out.println("noBean2 = " + noBean2);
}
생성자의 의존성 주입을 위한 매개변수 앞에 @Nullable
어노테이션을 붙여주면 주입 대상이 없을 경우 null이 입력된다.
@Autowired
public void setNoBean3(Optional<Member> noBean3) {
System.out.println("noBean3 = " + noBean3);
}
2와 비슷한데 주입 대상이 없을 경우 Optional.empty
가 입력된다.
noBean3 = Optional.empty
noBean2 = null
위 코드에서 Member
클래스는 스프링 빈이 아니기 때문에 코드를 실행하면 null
과 Optional.empty
가 출력되는걸 확인할 수 있었다..!