블로그 이미지

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DI(Dependency Injection)의 종류와 장단점
    Programming/Spring 2022. 4. 26. 01:01

    필드 주입

    1. 장점
      • 의존성 주입하기가 쉬움
    2. 단점
      • 외부에서 접근이 불가능하기 때문에 테스트시 객체를 수정할 수 없음
      • final 키워드를 붙이기 못하기 때문에 객체의 불변을 보장하지 못함
      • DI 프레임워크가 존재해야만 가능한 방식이기 때문에, 프레임워크에 의존적임
      • SRP 위반

    Setter 주입

    1. 장점
      • 의존성이 선택적으로 필요한 경우에 사용 가능
      • 의존성이 변경될 가능성이 있는 경우에 사용 가능
    2. 단점
      • final 키워드를 붙이기 못하기 때문에 객체의 불변을 보장하지 못함
      • 구현체를 주입해주지 않아도 생성이 가능해지는데, 이때 메서드를 호출하면 NullPointerException이 발생하게 됨. 즉, 주입이 필요한 객체가 주입되지 않아도 객체를 생성할 수 있게 된다는 것이 문제

    생성자 주입

    1. 장점
      • 의존 객체 주입 없이는 객체를 생성하지 못하도록 강제할 수 있음
      • final 키워드 사용 가능
      • 순환 의존성을 컴파일 단계에서 잡아낼 수 있다.
      • 생성자의 매개변수로 의존성이 추가되기 때문에 의존성이 많아질 경우 개발자가 자연스레 리팩터링을 생각하게 함
    2. 특이사항
      • 단일 생성자인 경우에 @Autowired 키워드 없어도 됨

    댓글

Designed by Tistory.