스프링 빈으로 등록되어 있지 않은 경우, 주입할 빈이 없더라도 동작하도록 처리하려면 어떻게 해야할까?

 

자동 주입 대상을 옵션으로 처리하는 방법은 아래와 같다.

스프링 빈으로 등록되어 있지 않은 Member라는 클래스를 optional 하게 주입하는 방법을 알아보자.

 

- @Autowired(required = false)

- @Nullable

- @Autowired(required = false) + Optional

public class TestBean{
    
    //첫번째 방법의 경우에는 얘가 호출자체가 되지 않는다.
    @Autowired(required = false)
    public void setNoBean1(Member member){
    	System.out.println("noBean 1 =" + member);
    }
    
    
    //호출은 되지만 Member가 빈으로 등록되지 않았으므로 null 값이 직힌다.
    @Autowired
    public void setNoBean2(@Nullable Member member){
    	System.out.println("noBean 2 ="+ member);
    }
    
    //Member가 빈으로 등록되지 않았으므로 Optional.empty 호출되면서 null 값이 찍힌다.
    @Autowired(required= false)
    public void setNoBean3(Optional<Member> member){
    	Syetem.out.println("noBean 3 ="+ member);
    }

}

 

 

출처 : 인프런 김영한 - 스프링 핵심 원리 기본편

+ Recent posts