본문 바로가기
IT/Java

의존관계 주입시 Bean이 없을때

by 성준하이 2023. 7. 22.
반응형

예전 포스팅에서 의존관계 생성자 주입에 대해서 다룬 포스팅이 있다.

자세한 내용은 참고 포스팅을 참고 바란다.

 

코드에서 Bean을 불러오는 코드가 아래와 같이 있다.

@Autowired
public void method(Test test) {
        System.out.println("TestBean = " + test);
}

겉으로만 봤을땐 문제가 없어보이지만 문제가 생기는 경우는 Test라는 클래스가 Bean에 들어가있지 않을 경우에 에러가 난다.

 

그럴 경우엔 3가지 방식으로 회피를 할수 있다.

 

  • autowired(required=false)
    필수값 설정을 false로 설정
@Autowired(required=false)
public void method(Test test) {
        System.out.println("TestBean = " + test);
}
  • @Nullable
    입력변수를 null 허용함
@Autowired
public void method(@Nullable Test test) {
        System.out.println("TestBean = " + test);
}
  • Optional 사용
    값이 있으면 Optional안에 Test를 넣고 없으면 Optional 안에 empty를 넣어서 반환
@Autowired
public void method(Optional<Test> test) {
        System.out.println("TestBean = " + test);
}

 

Test가 없을 경우 위 3개의 테스트를 출력하면 아래와 같다.

  • autowired(required=false)
    출력값 없음
  • @Nullable
    TestBean = null
  • Optional 사용
    TestBean =Optional.empty

참고 포스팅

https://thenicesj.tistory.com/442

 

Constructor Injection 방식을 권장하는 이유

이전 포스팅에서 autowired 방식과 requiredArgConstructor를 사용하여 final로 변수 선언하여 의존성 주입하는 방법에 대해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅을 확인하길 바란다. 이 포

thenicesj.tistory.com

 

반응형

댓글