본문 바로가기
Spring Framwork

의존성 주입

by orioncsy 2023. 3. 11.

의존성 주입

종류

생성자 주입

  • 생성자를 통해 의존성을 주입하는 방식

필드 주입

  • 필드를 통해 의존성을 주입하는 방식

Setter 주입

  • setter method를 활용해 의존성을 주입하는 방식

생성자 주입 권장

순환참조 방지

  • setter 주입이나 필드 주입은 빈 객체를 생성 후 의존성을 주입하여 빈 객체 생성 시점에 순환 참조 발생 여부를 확인할 수 없다.
  • 생성자 주입은 빈 객체를 생성하는 시점에 생성자 파라미터에 빈 객체를 찾아 주입한 뒤 빈 객체를 이용하여 생성한다.
    • 애플리케이션 구동 시점에서 순환 참조를 검출할 수 있다.

Final 키워드 사용 가능

  • 생성자 주입은 final 키워드를 사용할 수 있어 빈 객체 변경으로 인한 NPE를 예방 가능

애너테이션 활용 가능

  • 생성자 주입은 애너테이션(@RequiredArgsConstructor)를 활용하여 주입 가능

테스트 코드 작성 용이

  • 필드 주입의 경우 외부 접근이 안되기 때문에 순수 자바 코드로 작성한 단위 테스트 사용 불가
  • 필드 주입의 경우 필드 주입한 필드는 spring 프레임워크에서 동작하지 않아 null이 된다.
  • 생성자 주입의 경우 객체지향 OCP(Open Closed Principle) 원칙에 위배된다.

Reference

https://soobarkbar.tistory.com/230

'Spring Framwork' 카테고리의 다른 글

Bean Life Cycle  (0) 2023.03.27
Bean Scope  (0) 2023.03.19
Controller  (0) 2023.03.18
Spring & Spring Boot  (0) 2023.03.17
Filter & Interceptor  (0) 2023.03.16