의존관계로 등록되지 않은 즉, 스프링 컨테이너가 관리하는 빈이 아닌 클래스에 대해 @Autowired 를 쓸때 어떻게 처리할 것인지에 관한 옵셔널 처리를 알아보자
아래에서 나오는 예제의 Member 클래스는 스프링 빈으로 등록되지 않은 일반 자바 클래스이다.
@Autowired(required = false)
의존관계가 주입되지 않은 클래스가 하나라도 포함되어 있다면 아예 호출 자체를 하지 않는다. (의존관계가 주입된 클래스를 같이 써주어도 호출 되지 않았음)
@Autowired(required = false)
public void setNoBean1(Member noBean1) {
System.out.println("noBean1 : "+noBean1);
}
@Nullable
의존관계가 주입되지 않은 클래스에 대해 null 이라고 출력 해준다.
@Autowired
public void setNoBean2(@Nullable Member noBean2) {
System.out.println("noBean2 : "+noBean2); // noBean2 : null
}
Optional<T>
의존관계가 주입되지 않은 클래스에 대해 Optional.empty 라고 출력 해준다.
@Autowired
public void setNoBean3(Optional<Member> noBean3) {
System.out.println("noBean3 : "+noBean3); // noBean3 : Optional.empty
}
참고
인프런 - 김영한의 스프링 기본편
'Spring' 카테고리의 다른 글
조회 빈이 2개 이상일 때 해결방법! (0) | 2022.06.04 |
---|---|
[Springboot] Execution failed for task ':test' 에러 해결방법 (0) | 2022.06.04 |
의존관계 주입방법 (0) | 2022.06.04 |
@ComponentScan 과 @Autowired (0) | 2022.06.04 |
자동 빈 VS 수동 빈 충돌!!! (0) | 2022.05.27 |
댓글