SPRING

[SPRING]스프링 빈 주입 시 NULL 처리

steadyMan 2021. 3. 9. 00:11

스프링 컨테이너로 부터 객체를 주입받을때  컨테이너에 주입대상 빈이 없다면 에러가 발생한다. 

객체가 없어 주입에 실패할때 사용할 수 있는 옵션은?

  • @Autowired(required=false) : 주입대상이 없을경우 호출자체가 안된다.
  • @Nullable : 호출은 되고 없을경우 Null이 입력된다. 
  • Optional<Member> member : Optional.empty가 입력된다.

하지만 이럴경우 null이 입력되어 추후에 해당 객체를 사용할때 null체크를 해주거나 

그냥 사용하여 널포인터가 발생할 수 있다. 

생성자 주입을 선택해라!

생성자 주입을 하면 데이터 누락있을때 컴파일 오류발생한다.

객체 필드에 final 접근제한자를 사용하여 누락 혹은 오류를 컴파일 오류선에서 찾기 가능(빠른 에러확인)

 

또한 테스트코드 작성에도 용이하다.

 

생성자 주입 방식 선택 이유는 여러가지 있지만 프레임워크에 의존하지 않고,

순수한 자바 언의 특징을 잘 살리는 방법

 

기본으로 생성자 주입을 사용하고, 필수 값이 아닌 경우에는 수정자 주입 방식을 옵션으로 부여하면 된다. 

생성자 주입과 수정자 주입(Setter)을 동시에 사용할 수 있다

 

항상 생성자 주입을 선택해라! 그리고 가끔 옵션이 필요하면 수정자 주입을 선택해야한다.

 

필드 주입은 테스트코드 및 추후 수정이 용이하지 않다.