minOS

의존관계 자동 주입(2) - 옵션 처리 본문

TIL/김영한의 스프링 핵심 원리

의존관계 자동 주입(2) - 옵션 처리

minOE 2024. 4. 10. 14:03
728x90

옵션 처리

주입할 스프링 빈이 없어도 동작해야 할 때가 있다.
그런데 @Autowired만 사용하면 required 옵션의 기본값이 'true'로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.

자동 주입 대상을 옵션으로 처리하는 방법
1) @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출이 안됨
2) org.springframework.lang.@Nullable : 자동 주입 대상이 없으면 null이 입력된다
3)Optional<>: 자동 주입할 대상이 없으면 'Optional.empty'가 입력된다.

 	//호출 안됨
        @Autowired( required = false)
        public void setNoBean1(Member noBean1){
            System.out.println("noBean1 = " + noBean1);
        }
        //null 호출
        @Autowired
        public void setNoBean2(@Nullable Member noBean2){
            System.out.println("noBean2 = " + noBean2);
        }
        //Optional.empty 호출
        @Autowired
        public void setNoBean3(Optional<Member> noBean3){
            System.out.println("noBean3 = " + noBean3);

        }


출력 결과

 


Member는 스프링 빈이 아님
@Autowired( required = false)는 아예 호출이 안됨

 

참고

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

 

728x90