본문 바로가기
Spring

의존관계가 아닐때 옵셔널처리

by 쁘니쁘나 2022. 6. 4.

 

의존관계로 등록되지 않은 즉, 스프링 컨테이너가 관리하는 빈이 아닌 클래스에 대해 @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
    }

 

 

 

 

참고


인프런 - 김영한의 스프링 기본편

댓글