본문 바로가기

web +a

자동주입 - 옵션 처리

@Autowired에서 주입가능한 스프링 빈이 없어도 동작해야 할 때가 있다.

cf. required 옵션 디폴트가 true라서 주입대상이 없으면 오류가 발생한다.

 

 

자동 주입 대상을 설정해야 한다.

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

 

 

 

예제) 

스프링빈으로 관리되는 객체가 아닌 Member객체를 @Autowired 메서드의 매개변수로 넣은 상태다.

즉 @Autowired에서 주입가능한 스프링빈이 없는 상태이다.

 

 static class TestBean {
        //1.  
        //호출 안됨 - 의존관계가 없을 경우 아예 호출안됨
        @Autowired(required = false)
        public void setNoBean1(Member member) {
            System.out.println("setNoBean1 = " + member);
        }
        //2.
        //null 호출
        @Autowired
        public void setNoBean2(@Nullable Member member) {
            System.out.println("setNoBean2 = " + member);
        }
        //3.
        //Optional.empty 호출
        @Autowired(required = false)
        public void setNoBean3(Optional<Member> member) {
            System.out.println("setNoBean3 = " + member);
        }
    }

 

∨ Test 실행 & 결과

더보기
@Test
void AutowiredOption(){
    ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);
}

 

 

 

참고 ↓

 

 

cf. @Nullable, Optional은 생성자주입에서 일부필드에만 선택적으로 사용해도 된다.

자유롭게.. 그냥 쓰는고임

 

 

반응형

'web +a' 카테고리의 다른 글

생성자 코드 최적화 - lombok 라이브러리  (0) 2022.07.13
생성자 주입 권장  (0) 2022.07.13
컴포넌트 스캔  (0) 2022.07.08
싱글톤 컨테이너  (0) 2022.07.08
스프링 빈 조회 (getBean) - 상속관계인 경우  (0) 2022.07.06
다른 블로그