[스프링 핵심원리 기본편] 7.2 옵션처리

코린이서현이·2023년 11월 12일
0

🤔들어가면서🤔

우리 언니 보구 싶다... 내 인생 첫번째 베프인데...

📌 옵션처리

  • 주입할 스프링 빈이 없어도 동작해야할 때가 있다.
  • @Autowiredrequired 옵션의 기본값이 true

자동 주입 대상을 옵션으로 처리하는 방법

  1. @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨
@Autowired(required = false)
    public void setNoBean1(Member noBean1) { //Member <- 스프링 빈 X
      System.out.println("noBean1 = " + noBean1);
    }

➡️ 실행 결과 : 호출 되지 않는다.

  1. org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다.
@Autowired
    public void setNoBean2(@Nullable Member noBean2) { 
      System.out.println("noBean2 = " + noBean2);
    }

➡️ 실행 결과 : noBean2 = null

  1. Optional<> : 자동 주입할 대상이 없으면 Optional.empty가 입력된다.
@Autowired
    public void setNoBean3(Optional<Member> noBean3) { 
      System.out.println("noBean3 = " + noBean3);
    }

➡️ 실행 결과 : noBean3 = Optional.empty

전체 코드

public class AutowiredTest {
  /*
  @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨
  org.springframework.lang.@Nullable : 자동 주입할 대상이 없으면 null이 입력된다.
  Optional<> : 자동 주입할 대상이 없으면 Optional.empty 가 입력된다.
  */
  @Test
  void autowiredOption() {
    ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);

  }

  static class TestBean {
    @Autowired(required = false)
    public void setNoBean1(Member noBean1) { //Member <- 스프링 빈 X
      System.out.println("noBean1 = " + noBean1);
    }

    @Autowired
    public void setNoBean2(@Nullable Member noBean2) { 
      System.out.println("noBean2 = " + noBean2);
    }
    @Autowired
    public void setNoBean3(Optional<Member> noBean3) { 
      System.out.println("noBean3 = " + noBean3);
    }


  }

}

➕ 참고

참고: @Nullable, Optional은 스프링 전반에 걸쳐서 지원된다. 예를 들어서 생성자 자동 주입에서 특정 필드에
만 사용해도 된다.

위의 말이 무슨 말인지 추가로 공부해보자.

😅마무리하면서😅

더 잘하구 싶다..?! 정말?!!
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글